CN101317157B - 减少对于存储数据软件错误的脆弱性 - Google Patents
减少对于存储数据软件错误的脆弱性 Download PDFInfo
- Publication number
- CN101317157B CN101317157B CN2005800518039A CN200580051803A CN101317157B CN 101317157 B CN101317157 B CN 101317157B CN 2005800518039 A CN2005800518039 A CN 2005800518039A CN 200580051803 A CN200580051803 A CN 200580051803A CN 101317157 B CN101317157 B CN 101317157B
- Authority
- CN
- China
- Prior art keywords
- data word
- logical units
- storage
- value
- content
- 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.)
- Expired - Fee Related
Links
Images
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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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
Abstract
本发明涉及用以减少对于数据存储的软件或程序错误的脆弱性的装置和方法。在一个实施方式中,一种装置包括逻辑存贮单元、逻辑确定单元和逻辑选择单元。上述逻辑确定单元用来确定数据字的状态。上述逻辑存贮单元包括用以存贮数据字的第一部分、数据字的第二部分和由确定逻辑单元产生的结果的逻辑单元。上述逻辑选择单元根据用于存贮结果的逻辑存贮单元的内容来选择数据字的第二部分存贮逻辑单元的内容或替换值。上述替换值取决于逻辑存贮数据字的第一部分的存储逻辑单元的预定位的内容。
Description
技术领域
本说明书的内容涉及数据处理,特别是数据处理设备中的错误缓和。
背景技术
随着集成电路制造技术的改进,能继续提供体积更小、工作电压更低的微型处理机和其他数据处理设备。这些设备的生产商和用户越来越受到软件或程序错误现象的影响。当α粒子和高能量的中子碰撞集成电路并且在电路节点上改变存储负荷时,软件错误就会发生。如果电荷改变足够大的话,其结果一个节点上的电压可以把代表一种逻辑状态的电平改变为另一种不同的逻辑状态的电平。在那种情况下,那个节点存储的信息就会发生变化。总之,软件错误发生的增加是与集成电路的体积缩小相一致的。因为,当电路密度提高时,粒子碰撞电压节点的可能性就增加。同样地,随着工作电压的减小,代表不同逻辑状态的电压电平之间的差别就会缩小。那样,仅需较小的能量就可改变电路节点的逻辑状态,从而会产生更多的软件错误。
阻挡或阻止引起软件错误的粒子是极其困难的,所以,数据处理设备经常设有纠错码、奇偶校验或其他技术支持(支撑系统),或者其他一些检测技术,并且有时仅需软件错误的改正。取决于所使用的特定技术和该技术所实施的范围,支持的成本在于设备或硬件的增加和性能的降低。检测和纠错能力仅限于一、二个位错误。因此,需要一些备选的错误缓和技术是,它们可让数据处理设备设计师们作出不同的成本和能力选择。
附图说明
本发明通过典型范例进行说明,且不受附图的限定。
图1表示本发明在一个具有存储逻辑单元和窄值确定逻辑单元的处理器中的实施方式。
图2表示本发明在一个具有存储逻辑单元和零字节确定逻辑单元的处理器中实施方式。
图3表示本发明在一个具有冗余存储逻辑单元和窄值确定逻辑单元的处理器中的实施方式。
图4表示本发明在一个具有冗余存储逻辑单元和零字节确定逻辑单元的处理器中的实施方式。
图5表示本发明的减少代表窄值存储数据软件错误的脆弱性的方法的另一实施方式。
图6表示本发明的使用一种检测并纠正代表窄值的存储数据软件错误的方法的实施方式。
图7表示本发明在包括可替换部分的减少存储数据软件错误的脆弱性的方法中的实施方式。
图8表示本发明在数据处理系统中的实施方式。
具体实施方式
下面要继续说明面对数据存储软件错误,使用一种装置和方法来减少其脆弱性的实施方式。为了更透彻的理解本发明,以下的说明提出许多特有的细节-例如存储逻辑单元的配置。但是,对技术专家来说,本发明可以付诸实践而不需要这样的特定细节。补充一点,对一些结构、电路、技术及熟知的类似方面的情况,这里未作详尽的说明,以避免给本发明带来不必要的费解。
使用本发明的实施方式可以减少存储数据的软件或程序错误的脆弱性,其中利用了这样的实际情况:在位数方面,数据处理装置中使用的很多数据值比寄存器、队列、缓冲器、数据保持锁存器或提供存储的其他存储逻辑单元更窄。因此,这些窄值经常被符号扩展或通过其他方式加以扩展,结果,位单元中的数据存储并不是数据处理设备正确执行所需要的。本发明的实施方式旨在实现如下两点:当数据不需要时就忽略在这些位单元中含有的数据软件错误,并且将这些位单元用来冗余地存储其他数据,以使那些数据在面临软件错误时减少脆弱性。本发明的实施方式可以单独或者同其他检测技术、纠错技术或缓和技术结合使用。
图1表示本发明在处理器100中的一种实施方式。
处理器100可以是各种不同类型处理器中的任何一种,如系列处理器、系列处理器或英特尔公司的其他处理器系列,或者任何通用的或其他公司的处理器。尽管图1示出了在一个处理器中实现的发明,但本发明也可在任何其他数据处理部件或设备中使用,如芯片组、包括主系统内存或硬盘存储器的任何型号的存储器、总线和互连线,以及任何其他存储和发送信息的装置。
存储器100包括存储逻辑单元110,它可以是用于存储的任何逻辑元件或电路,如同一个寄存器、指令或其他类型的队列或缓冲器,一种数据或其他高速缓存,一种数据保持或其他锁存器,或其他类型的存储装置,其中,数据可以是任何一种形式的信息,包括由二进制位或任何其他方式代表的指令。逻辑存储110可以由任何类型的存储元件组成,如锁存器和触发器。在本说明书中,用“0”(或“零位”)和“1”(或1)来描述位的值,前者可以是代表逻辑“0”、或断开或无效状态的任何电压或电平,而后者可以是代表一个逻辑“1”或连接或有效状态的任何电平。如果在一个字节、字或任何其他数据量的所有位具有“0”值,则该数据量可被描述为具有零值。
在图1的实施方式中,存储逻辑单元110是为存储一个数据字设计的,在数据字中一个字由4个字节构成,一个字节由8个位组成。但是,在其他实施方式中,相应的存储逻辑单元可以设计成存储任何其他数据量或数据值大小,一个数据字可以由任何其他数量的字节和位构成。存储逻辑单元110包括字节0的存储逻辑单元120、字节1的存储逻辑单元121、字节2的存储逻辑单元122、字节3的存储逻辑单元123和指示符存储逻辑单元130。字节0、字节1、字节2和字节3的存储逻辑单元120、121、122和123各自用来存储数据字的相应部分,在本实施方式中为一个字节。在本实施方式中,字节0的存储逻辑单元120用于存储数据字的最低字节,字节1存储逻辑单元121旨在存储第二低字节,字节2的存储逻辑单元122用于存储最低的第三低字节,字节3的存储逻辑单元123用来存储最高字节。
处理器100同样包含确定逻辑单元140。该确定逻辑单元140可以是确定要存储在存储逻辑单元110中的数据字的状态的任何逻辑或电路。在本实施方式中,该状态是:数据字是一个窄值,这里,窄值是经符号扩展的数据字。例如,数据字“000000000 00000000 0000000 01010101”是“01010101”字节的符号扩展形式,在该形式中,字节的更高有效位中使用的“0”指示该字节值是一个正数,。另一个例子,“11111111 11111111 11111111 11010101”是“11010101”字节的符号扩展形式,在该形式中,字节的最高有效位中使用的“1”指示该字节值是一个负数。在本发明范围内也可能使用任何一种编码形式,如使用二的补码或一的补码。
在图1的实施方式中,确定逻辑单元140包括字节1的比较器141、字节2的比较器142和字节3的比较器143。141、142和143字节比较器中的每一个可包括每个位的“异或”门,旨在确定相关字节的每个位是否与数据字的字节0的最高的位相同。或者,确定逻辑单元140可以包括头“零”检测器和/或头“一”检测器,它们由逻辑系列或电路系列的配置动态地形成,或以任何其他类型系列形成,以确定某个情况的存在。或者,完全可以实现在实践中用任何其他解决办法来确定一种状态的存在。确定逻辑单元140能够说明这样的状态是否存在,例如,在本实施方式中,存储在存储逻辑单元110中的数据字是否为窄值。也就是说,字节1、字节2和字节3的每个位是否与字节0的最高位相同。
指示符存储逻辑单元130用来存储确定逻辑单元140产生的结果。在本实施方式中,用唯一的位字段(指示符位)来显示相应的数据字是否为窄值。
一旦相应的一个数据字和指示符位存入存储逻辑单元110中,由于粒子的碰撞或其他事件,存储逻辑单元110一个或更多的位上就会产生软件错误。因此,处理器100也包含用于选择的选择逻辑单元150,来选择存储逻辑单元110的高字节的内容或这些字节的替换值。该选择以指示符存储逻辑单元130的内容为基础。如果指示符存储逻辑单元130的内容表明存储在存储逻辑单元110中的数据字是窄值,那末,当数据被读取或由存储逻辑单元110以其他方式提供时,实际上只读取字节0的存储逻辑单元120的内容。为高字节提供的值,是通过将从字节0的存储逻辑单元120读到的数据进行符号扩展而获得的。以这种方式,可以忽略一个或多个窄值的高字节的软件错误。
选择逻辑单元150可包括由指示符存储逻辑单元130的内容控制的多路器,例如,一个按位的多路器用来提供在字节1、字节2和字节3的存储逻辑单元121、122或123的相应位中存储的位值,或者提供字节0的存储逻辑单元120最高位置存储的位值。另外的或备选的方式是,选择逻辑单元150可包括多路器,用于提供上述信息,或是已在硬件中永久设置的逻辑值“0或1”,这在如下描述的备选实施方式中可使用。
本发明可以有不同的备选实施方式。例如,确定逻辑单元140可确定高字节中的每个字节的值是否为零;指示符存储逻辑单元130可包括唯一的位用来表明高字节中的每个字节的值是零;以及选择逻辑单元150可给高字节中的每个字节提供零的替换值。或者,确定逻辑单元140也可确定高字节中每个字节的每个位的值是否为1;指示符存储逻辑单元130可包括唯一的位来表明高字节中的每个字节的每个位的值是1;以及选择逻辑单元150可给高字节中每个字节的每个位提供1的替换值。或者,确定逻辑单元140也可确定前面的两种可能性,指示符存储逻辑单元130可包括一个位用来表明高字节中的每个字节的值是零,且另一个位表明高字节中的每个字节的所有位的值是1,而选择逻辑单元150可提供适当的替换值。
图2说明另一个备选实施方式。图2示出了含有存储逻辑单元210的处理器200。在此实施方式以及在下面描述的任何其他实施方式中,可以使用任何类型的处理器和存储逻辑单元,并且存储逻辑单元可在处理器内的任何功能中使用。
存储逻辑单元210包括字节0的存储逻辑单元220、字节1的存储逻辑单元221、字节2的存储逻辑单元222、字节3的存储逻辑单元223、字节0的指示符存储逻辑单元230、字节1的指示符存储逻辑单元231、字节2的指示符存储逻辑单元232和字节3的指示符存储逻辑单元233。
处理器200也包括字节0的确定逻辑单元240、字节1的确定逻辑单元241、字节2的确定逻辑单元242和字节3的确定逻辑单元243。它们中的每一个逻辑都用来确定已存入存储逻辑单元210中的相应的数据字的字节是否与零相同。如果是这样,那末在字节0的指示符存储逻辑单元230、字节1的指示符存储逻辑单元231、字节2的指示符存储逻辑单元232或在字节3的指示符存储逻辑单元233中的相应的指示位就被设定。
处理器200也包括字节0的选择逻辑单元250、字节1的选择逻辑单元251、字节2的选择逻辑单元252和字节3的选择逻辑单元253。它们中的每一逻辑可用于选择存储逻辑单元210的相应字节的内容或选择这些字节的替换值。该选择以相应的指示符存储逻辑单元230、231、231和233的内容为基础。在此实施方式中,替换值是一个零字节。在另一实施方式中,确定逻辑单元要确定已存入的一个数据字的字节的每个位是否与1相同,替换值可以是值“11111111”。
在图2的实施方式中,可以替换任何字节,包括最低字节或任何字节组合。
在图3中示出了本发明的另一实施方式。图3包括处理器300,其中包含存储逻辑单元310,该存储逻辑单元310含有字节0的存储逻辑单元320、字节1的存储逻辑单元321、字节2的存储逻辑单元322、字节3的存储逻辑单元323和指示符存储逻辑单元330。
处理器300也包含确定逻辑单元340,用来确定要储存的数据字是否为一个窄值,就象前面所描述的。如果确定逻辑单元340确定该数据字是一个窄值,则指示符存储逻辑单元330中的指示位就被设定。
处理器300还包括选择逻辑单元350,而选择逻辑单元350又包含选择逻辑单元351、352和353。选择逻辑单元351选择要存入字节1的存储逻辑单元321的数据字的字节0或字节1;选择逻辑单元352选择要存入字节2的存储逻辑单元322字节0或字节2;以及选择逻辑单元353选择要存入字节3的存储逻辑单元323的字节0或字节3。在每种情况下,如果确定逻辑单元340决定要存入的数据字是一个窄值,就存入字节0。因此,可以存储字节0的冗余副本,以使检测和纠正软件错误成为可能,如下文所描述的那样。
处理器300还包括选择逻辑单元360,而选择逻辑单元360又含有选择逻辑单元361、362和363。选择逻辑单元361选择字节1的存储逻辑单元321的内容或一个替换值;选择逻辑单元362选择字节2的存储逻辑单元322的内容或一个替换值;选择逻辑单元363选择字节3的存储逻辑单元323的内容或一个替换值。每个选择以指示符存储逻辑单元330的内容为基础,这样,在指示位表明存储的数据字是一个窄值的情况下,就选择替换值。如果最低字节的最高位是零,则替换值全是零,如果最低字节的最高位是1,则替换值都是1。备选的方式是,既然最低字节在每个其他字节位置上进行重复,那么每个字节的替换值就可通过将每个字节的最高位复制到相应字节的每个其他位上来构成。
在其他实施方式中,确定逻辑单元340可确定:如果最高字节的所有位都是0,那替换值就全都是0;确定逻辑单元340还可以确定:如果最高字节的所有位都是1,则替换值就全都是1;并且确定逻辑单元340可确定是否出现两种情况中的每一种情况,可以利用双方的替换值。
处理器300还包括错误逻辑单元370,它可实现错误检测或错误纠正。错误逻辑单元370通过对从存储逻辑单元310读出的每个字节相互进行比较来进行错误检测,可以用多种方式进行比较,如将每个高字节与最低字节比较、将每个字节同其他每个字节比较,或用任何其他方式进行比较。如果这些比较中的任何一种确定字节中的任何一个字节与另外一些字节不一致,错误逻辑单元370就可用任何熟知的解决方法故障来指示从存储逻辑单元310读出的数据中的错误,如产生故障或异常。
比较可在仅当指示符存储逻辑单元330的内容示出已存储了窄值时进行,或者可以独立于指示符存储逻辑单元330的内容进行而将比较结果忽略,除非指示符存储逻辑单元330指示已存储了一个窄值。
处理器300还包含一条数据路径380,用以读出数据和将它们从存储逻辑单元310取到另一终点。
根据前面所述,错误逻辑单元370通过比较而完成错误的纠正,如果出现一致性上的某些错误,出自字节的数据与其它字节不同时就可忽略。例如,如果来自字节0的存储逻辑单元320、字节1的存储逻辑单元321和字节2的存储逻辑单元322的所有数据都是一样的,但来自字节3的存储逻辑单元323的数据是不同的,因此来自字节3的存储逻辑单元323的数据可被忽略。来自字节0的存储逻辑单元320的数据可被读取到数据路径380,作为已存储的数据字的字节0。或者,如果来自字节1的存储逻辑单元321、字节2的存储逻辑单元322和字节3的存储逻辑单元323的数据都是相同的,但来自字节0的存储逻辑单元320的数据是不同的,那来自字节0的存储逻辑单元320的数据可以被忽略,并且可将数据从字节存储逻辑单元1读出到数据路径380,作为已存储的数据字的字节0的值。
注意,前面所描述的比较可以检查出多个错误。例如,来自字节0的存储逻辑单元320、字节1的存储逻辑单元321和字节2的存储逻辑单元322的数据全都相同,但来自字节3的存储逻辑单元323两个比特位置有数据不同,这将被视为双位错误。或者,来自字节0的存储逻辑单元320和字节1的存储逻辑单元321的数据是同样的,而来自字节2的存储逻辑单元322的数据不同于在一个比特位置的数据,且来自字节3的存储逻辑单元323的数据不同于另一不同比特位置的数据,那就将被视为双位错误。
据此,接下来的表格说明,可根据错误逻辑单元370检测的错误数目和位置而取的动作。前四列的值代表着每列开头指明的字节的错误数目。就如在表中看到的那样,本发明的实施方式是非常理想的,它们使多位错误的检测和纠正成为可能。
字节0 | 字节1 | 字节2 | 字节3 | 动作 |
0 | 0 | 0 | 1 | 纠正错误 |
0 | 0 | 0 | 2 | 纠正错误 |
0 | 0 | 1 | 1 | 如果字节2和3不同,则纠正错误,如果字节2和3相同,则检测出错误。 |
0 | 0 | 0 | 3 | 纠正错误 |
0 | 0 | 1 | 2 | 纠正错误 |
0 | 1 | 1 | 1 | 如果字节1,2和3不同,则检测出错误。如果字节1,2和3相同,则为故障。 |
0 | 0 | 0 | 4 | 纠正错误 |
0 | 0 | 1 | 3 | 纠正错误 |
0 | 0 | 2 | 2 | 如果字节2和3不同,则纠正错误,如果字节2和3相同,则检测出错误。 |
0 | 1 | 1 | 2 | 检测出错误 |
1 | 1 | 1 | 1 | 如果字节0,1,2和3不同,则检测出错误,如果字节0,1,2和3相同,那就存在故障 |
图4表示本发明的另一实施方式。图4包括一个处理器400,该处理器包含存储逻辑单元410,而存储逻辑单元410含有字节0的存储逻辑单元420、字节1的存储逻辑单元421、字节2的存储逻辑单元422、字节3的存储逻辑单元423、指示符存储逻辑单元431、指示符存储逻辑单元432和指示符存储逻辑单元433。
处理器400还包括确定逻辑单元440、441、442和443,由它们确定要分别存入字节0的存储逻辑单元420、字节1的存储逻辑单元421、字节2的存储逻辑单元422和字节3的423存储逻辑单元的数据字的字节是否为零字节。如果确定逻辑单元440、441、442或443确定对应的字节是零字节,则就分别在指示符存储逻辑单元430、431、432和433中相应地调整指示位。
处理器400还包括选择逻辑单元450、451、452和453。如果确定逻辑单元440确定字节0不是一个零字节,选择逻辑单元450就选择数据字的字节0存入字节0的存储逻辑单元420,或是选择字节1,如果字节0是零字节但字节1不是。如果确定逻辑单元441确定字节1不是一个零字节,选择逻辑单元451就选择数据字的字节1存入字节1存储逻辑单元421,或是选择节0,如果字节1是零字节但字节0不是。这样,字节0的存储逻辑单元420和字节1的存储逻辑单元421就成为一组,以让一个为另一个提供冗余存储。
类似的情况是,如果确定逻辑单元442确定字节2不是一个零字节,选择逻辑单元452就选择数据字的字节2存入字节2的存储逻辑单元422,或选择字节3,如果字节2是零字节但字节3不是。如果确定逻辑单元443确定字节3不是零字节,那选择逻辑单元453就选择数据字的字节3存入字节3的存储逻辑单元423,或选择字节2,如果字节3是零字节但字节2不是。
处理器400还包括选择逻辑单元460、461、462和463。在指示符存储逻辑单元430表明在字节0的存储逻辑单元420中存有零字节的情况下,选择逻辑单元460选择一个零字节的替换值,以可从字节0的存储逻辑单元420读出,替换否则,字节0的存储逻辑单元420的内容就被读取。在指示符存储逻辑单元431表明在字节1的存储逻辑单元421中存有零字节的情况下,选择逻辑单元461就选择一个零字节的替换值以可从字节1的存储逻辑单元421读出,否则,字节1的存储逻辑单元421的内容就被读取。在指示符存储逻辑单元432中表明在字节2的存储逻辑单元422中存有零字节的情况下,选择逻辑单元462就选择一个零字节替换值,以可从字节2的存储逻辑单元422读出,否则,字节2的存储逻辑单元422的内容就被读取。替换在指示符存储逻辑单元433表明字节3的存储逻辑单元423存有一个零字节的情况下,选择逻辑单元463就选择一个零字节替换值,以可从字节3423存储逻辑单元读出,否则,字节3的存储逻辑单元423的内容就被读取。
在其它实施方式中,也可代之以或另外还采用这样的方式,替换确定逻辑单元440、441、442和443可确定是否高字节的所有位都是1,且替换值可以是全部的1。
处理器400还包括错误逻辑单元470和错误逻辑单元472。错误逻辑单元470可通过字节0的存储逻辑单元420的内容与字节1的存储逻辑单元421内容的比较来实现错误检测。如果它们不一致,就指示存储逻辑单元410的读出数据中存在错误。错误逻辑单元472可通过字节2的存储逻辑单元422的内容与字节3的存储逻辑单元423的内容比较来实现错误检测,如果它们不一致,就指示存储逻辑单元410的读出数据中存在错误。
第一个比较可仅在指示符存储逻辑单元430或431的内容表明存有冗余值(就是说,检测出一个零字节)时才进行。第二个比较可仅在指示符存储逻辑单元432或433的内容表明存有冗余值时才进行。或者,这些比较可以与指示符存储逻辑单元430、431、432和433的内容无关地进行,但其结果被忽略,除非在相应的指示符存储逻辑单元表明存入有冗余值时忽略。
其它实施方式可提供不同的字节组配。例如,字节0和字节2之间可相互组配,字节1和字节3之间可相互组配,或者,可将2个以上字节的存储逻辑单元组配在一起,从而能进行纠误。
本发明的任何上述实施方式或任何其它实施方式可将字存储逻辑单元划分到分字(sub-palabras/sub-word)存储逻辑单元。分字大小的选择可取决于给定处理器中窄值或零值的典型大小,并且涉及到一个窄值或零值被检测到时,在可检测到的窄值或零值数量与被保护或可用于冗余比特数之间的折衷。
除前面提及的窄值定义外,一个窄值也可以是包含任何数量的比特任何数据字,这些字节的值对于正确的实施或体系结构状态是不需要的。所需要的窄值部分就是窄值的需求部分。
另一方面,如上所述,窄值或零值指示位对软件错误而言是脆弱的,所以,最好用ECC或奇偶性来保护。但是,在一些被忽略的字节没有被用于冗余存储的实施方式中,当错误将位从表示字节被忽略的敏感位置交换时,这些位中的某一位的错误不会危及正确的体系结构状态,因为在那种情况下,字节将被如同不存在所述位而读出。
图5表示用以减少存储数据对软件或程序错误的脆弱性的方法500的本发明的实施方式。在步骤(510中查证一个字存入到处理器中的数据,确定它是否为窄值。如果是窄值,该步骤520中窄值指示符就设立,在步骤530中,数据字被存储。在步骤540中,窄值指示符被读取,以确定要从存储器读取的数据字是否为窄值。如果不是,在步骤550中所有数据字被读出。如果是,在步骤560中数据字的最低字节被读出,并且在步骤570中,最低字节被符号扩展或延长以提供高字节。
图6表示用以减少存储数据的软件错误的脆弱性的本发明的方法600的本发明的一个实施方式。在步骤610中,查证要存入处理器中的一个数据字以确定它是否为窄值。如果是,则在步骤620中,一个窄值指示符被设置以表示存入的数据字是窄值。在步骤621中,为数据字的每个字节在每个存储位置存入最低字节。如果不是,则在步骤630中,在相应的存储位置存入数据字的每个字节。在步骤640中,读取窄值指示符以确定要从存储器读出的数据字是否为窄值。如果不是,则在步骤650中,整个数据字被读出。如果是,则在步骤660中数据字每个存储位置的内容被读出。在步骤661,将一些存储位置的内容与另一些进行比较。如果存在一致性,则在步骤670中,就用符号扩展最低存储位置的内容以提供完整的数据字。如果不一致,则在步骤671中,评估有多少不一致以确定错误是否可纠正。如果可纠正,则在步骤672中读出不含错误的存储位置的内容,并进行符号扩展,从而使错误得到纠正。如果不能纠正,则在步骤673中指出数据字中存在错误。
图7表示用以减少存储数据对软件错误的脆弱性的方法700的本发明的一个实施方式。在步骤710中,查证要存入处理器的一个数据字,确定它是否含有一个可替换部分,该部分可以是一个零字节替换或任何其中每个位的值与其它所有位值是一样的部分,或是可被事先确定的替换值所替换的任何其它部分。在图7的实施方式中,数据字包含一个低字节和一个高字节,该高字节被查证以确定它们是否为可替换的。如果可替换,则在步骤720中设立一个指示符,用来表明要存入的数据字含有一个可替换部分。在步骤721中,该低字节被存入低字节的存储位置。在步骤722中,将低字节的冗余副本存入高字节的存储位置。如果不是,则在步骤730中,数据字的每个字节被存入相应的存储位置。在步骤740中,读取指示符以确定要从存储器读出的数据字是否含有可替换部分。如果不含有,则在步骤750中将完整的数据字读出。如果含有,则在步骤760中读出低字节存储位置的内容,并在步骤761中,读出高字节存储位置的内容。在步骤762中,将低字节存储位置的内容与高字节存储位置的内容进行比较,如果存在一致性,则在步骤770中就为高字节提供替换值。如果没有一致性,则在步骤771中指示数据字中有错误。
在本发明范围内,图5、6、和7所示的方法可以按不同的顺序执行,可以省略所示的步骤,可以补充附加步骤,或者可以是包含重排、组合、省略和附加的组合。例如在图6中,如果执行不带纠错的错误检测,步骤671和672(分别负责确定错误是否可纠正的和进行纠错)就可省略。
图8表示本发明在系统800中的实施方式。系统800包含处理器810和系统内存820。根据前面所述,处理器810可以是上述的任何处理器。系统内存820可以是任何类型的存储器,例如以半导体为基础的随机存取存储器、静态或动态存储器,由脉冲(快闪型)记录的存储器,或者以半导体为基础的只读存储器,磁盘或光盘。在系统800中,系统内存820可成为要存入处理器810存储逻辑单元的数据字的来源,或者可成为处理器810的存储逻辑单元的可读数据字的目标。
在任何配置中,处理器810与系统内存820均可相互连接,通过任何总线组合或直接或点对点连接,以及与任何其它元件的媒介连接。系统800可以含有任何数量的总线,如同一条外围总线或组成部分,如图8中没有示出的输入/输出设备。
处理器100、200、300或400,或任何根据本发明实施方式设计的部件或其它部分,从其创始到模拟到制造可以分成几个阶段进行设计。代表一种设计的数据可用不同的方式表达设计。首先,作为在模拟中可利用结果,硬件或物理装置可以通过使用一种硬件描述语言或其它功能描数语言来表示。附加或备选的方式是,在设计过程的某些阶段,可能会产生在具有逻辑和/或晶体管门的电路级模型。另一方面,在某些步骤大部分设计而达到可通过代表不同装置实际安放的数据来进行模型化的程度。在使用常规半导体生产技术的情况下,表示装置安放模型(device placement model)的数据可以是规定用来生产集成电路的掩码的不同掩码层的各种特征之存在或不存在的数据。
在任何设计表示中,数据以机器可读介质的形式被存储。机器可读介质可以是被调制或以其他方式传送所述信息的光波或电波、存储器或者基于磁或光的存储介质如存储盘片。这些介质中的任何一种可以“镌带”或“指示”用于本发明实施方式的设计或其他信息,如同错误恢复例程中的指令。当指示或携带信息的电载波被传送时,在电信号的副本、缓冲或转发被执行的程度内,一个新的副本可被制作。于是,从通信或网络的供给商的操作,可以是进行一个制品的复制操作,例如,载波、本发明的实施技术。
以上描述了用以减少存储数据的软件错误的装置和方法。尽管已参照附图就某些实施方式作了描述,但一定要懂得这些实施方式仅用于说明而不在广义上对本发明加以限制。本发明不仅限于已描述和展示的具体结构和配置,因为通过对所公开内容的研究,本领域普通技术人员能够作出各种不同的修改。在技术进展快速的本技术领域,难以预测其进一步的发展,利用这些技术进展本文所公开的实施方式可容易地在其配置和细节上得到改进,而不脱离本公开的原则和后附的权利要求的范围。
Claims (15)
1.一种用于减少存储数据的软件错误的脆弱性的装置,包括:
第一存储逻辑单元,用以存储数据字的第一部分,所述数据字的第一部分是数据字的最低有效部分;
第二存储逻辑单元,用以存储数据字的第二部分,所述数据字的第二部分是除去最低有效部分后的数据字的其他部分;
确定逻辑单元,用以确定数据字的第二部分的每一位的值是否均与所述数据字的第一部分的最高有效位的值相同;
第三存储逻辑单元,用以存储所述确定逻辑单元确定的结果;以及
选择逻辑单元,用以基于第三存储逻辑单元的内容进行选择,当第三存储逻辑单元的内容表明所述数据字的第二部分的每一位的值均与所述数据字的第一部分的最高有效位的值相同时,则选择每一位都等于第一存储逻辑单元存储的所述数据字的第一部分的最高有效位的内容;当第三存储逻辑单元的内容表明所述数据字的第二部分的每一位的值不均与所述数据字的第一部分的最高有效位的值相同时,则选择第二存储逻辑单元存储的内容。
2.根据权利要求1的装置,其中,所述数据字的第一部分是数据字的最低有效部分。
3.根据权利要求1的装置,其中,所述数据字的状态是指所述数据字的第二部分的每一位的值是否均与所述数据字的第一部分的最高有效位的值相同。
4.根据权利要求1的装置,其中,所述替换值的每一位等于第一存储逻辑单元的所述预定位的内容。
5.根据权利要求1的装置,其中,第一存储逻辑单元的所述预定位用来存储所述数据字的第一部分的最高有效位。
6.根据权利要求1的装置,其中,第一存储逻辑单元和第二存储逻辑单元包含于下列各项之一中:寄存器、发出队列、数据高速缓存和数据保持锁存器。
7.一种用于减少存储数据的软件错误的脆弱性的装置,包括:
第一存储逻辑单元,用以存储数据字的第一部分,所述数据字的第一部分是数据字的最低有效部分;
第二存储逻辑单元,用以存储所述数据字的第一部分或数据字的第二部分;
确定逻辑单元,用以确定所述数据字除去数据字的第一部分后其他的部分的每一位的值是否均相同,如果所述数据字除去数据字的第一部分后其他的部分的每一位的值均相同,使替换值的每一位的值都等于此相同的值;
第三存储逻辑单元,用以存储所述确定逻辑单元确定的结果;
第一选择逻辑单元,用以基于所述确定逻辑单元的内容来选择存入第二存储逻辑单元的内容,当所述确定逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值均相同时,选择所述数据字的第一部分存入第二存储逻辑单元,当所述确定逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值不都相同时,选择所述数据字的第二部分存入第二存储逻辑单元;以及
第二选择逻辑单元,用以基于第三存储逻辑单元的内容进行选择,当第三存储逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值均相同时,则选择替换值;当第三存储逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值不都相同时,则选择所述第二存储逻辑单元存储的内容。
8.根据权利要求7的装置,其中,所述数据字的状态是所述数据字的第二部分的每一位的值与所述数据字的第二部分的每一其它位的值相同。
9.根据权利要求7的装置,其中,所述数据字的状态是所述数据字的第二部分的值是零。
10.根据权利要求7的装置,其中,所述替换值是零。
11.根据权利要求7的装置,其中,所述第一存储逻辑单元和第二存储逻辑单元包含于下列各项之一中:寄存器、发出队列、数据高速缓存和数据保持锁存器。
12.根据权利要求7的装置,还包括错误检测逻辑单元,用以对第一存储逻辑单元和第二存储逻辑单元的内容进行比较。
13.根据权利要求12的装置,其中,所述错误检测逻辑单元根据第三存储逻辑单元的内容对第一存储逻辑单元和第二存储逻辑单元的内容进行比较。
14.根据权利要求7的装置,还包括:
第四存储逻辑单元,用以存储所述数据字的第一部分和数据字的第三部分这二者之一;
第三选择逻辑单元基于确定逻辑单元的内容来选择存入第四存储逻辑单元的内容,当所述确定逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值均相同时,选择所述数据字的第一部分存入第四存储逻辑单元,当所述确定逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值不都相同时,选择所述数据字的第三部分存入第四存储逻辑单元;
数据路径,用以从第一存储逻辑单元读出储存值;以及
纠错逻辑单元,用以对第一存储逻辑单元、第二存储逻辑单元和第四存储逻辑单元的内容进行比较,当所述确定逻辑单元的内容表明所述数据字除去数据字的第一部分后其他的部分的每一位的值均相同时,如果第二存储逻辑单元的内容与第一存储逻辑单元的内容不同而与第四存储逻辑单元的内容相同,则向所述数据路径提供第二存储逻辑单元的内容以代替第一存储逻辑单元的内容。
15.一种用于减少存储数据的软件错误的脆弱性的系统,包括:
存储器;以及
处理器,其中包含:
第一存储逻辑单元,用以存储数据字的第一部分,所述数据字的第一部分是数据字的最低有效部分;
第二存储逻辑单元,用以存储所述数据字的第二部分,所述数据字的第二部分是除去最低有效部分后的数据字的其他部分;
确定逻辑单元,用以确定所述数据字的第二部分的每一位的值是否均与所述数据字的第一部分的最高有效位的值相同;
第三存储逻辑单元,用以存储所述确定逻辑单元确定的结果;以及
选择逻辑单元,用以基于第三存储逻辑单元的内容进行选择,当第三存储逻辑单元的内容表明所述数据字的第二部分的每一位的值均与所述数据字的第一部分的最高有效位的值相同时;则选择每一位都等于第一存储逻辑单元存储的所述数据字的第一部分的最高有效位的内容;当第三存储逻辑单元的内容表明所述数据字的第二部分的每一位的值不均与所述数据字的第一部分的最高有效位的值相同时,则选择第二存储逻辑单元存储的内容。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/ES2005/070144 WO2007042581A1 (es) | 2005-10-10 | 2005-10-10 | Reducción de la vulnerabilidad ante errores de software de datos almacenados |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101317157A CN101317157A (zh) | 2008-12-03 |
CN101317157B true CN101317157B (zh) | 2011-06-08 |
Family
ID=36088330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800518039A Expired - Fee Related CN101317157B (zh) | 2005-10-10 | 2005-10-10 | 减少对于存储数据软件错误的脆弱性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7558992B2 (zh) |
KR (1) | KR101001068B1 (zh) |
CN (1) | CN101317157B (zh) |
WO (1) | WO2007042581A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007042581A1 (es) | 2005-10-10 | 2007-04-19 | Intel Corporation | Reducción de la vulnerabilidad ante errores de software de datos almacenados |
US8140908B2 (en) * | 2007-06-22 | 2012-03-20 | Microsoft Corporation | System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception |
JP5137550B2 (ja) * | 2007-12-12 | 2013-02-06 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
KR100904518B1 (ko) | 2008-01-02 | 2009-06-25 | 고려대학교 산학협력단 | 결함 데이터 비트를 포함하는 캐쉬 메모리의 데이터비트열에 데이터를 쓰는 방법 및 데이터 비트열에서데이터를 읽는 방법 |
WO2014142852A1 (en) * | 2013-03-13 | 2014-09-18 | Intel Corporation | Vulnerability estimation for cache memory |
US9176895B2 (en) | 2013-03-16 | 2015-11-03 | Intel Corporation | Increased error correction for cache memories through adaptive replacement policies |
US10691572B2 (en) * | 2017-08-30 | 2020-06-23 | Nvidia Corporation | Liveness as a factor to evaluate memory vulnerability to soft errors |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264127A (zh) * | 1999-01-26 | 2000-08-23 | 日本电气株式会社 | 具有冗余存储电路的半导体存储器件 |
CN1639689A (zh) * | 2002-01-29 | 2005-07-13 | 皇家飞利浦电子股份有限公司 | 处理数据的方法、数据存储系统、文件系统和计算机程序产品 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0520676A3 (en) * | 1991-06-28 | 1993-11-10 | Sgs Thomson Microelectronics | Memory subsystem with error correction |
US5771247A (en) * | 1994-10-03 | 1998-06-23 | International Business Machines Corporation | Low latency error reporting for high performance bus |
US6038680A (en) * | 1996-12-11 | 2000-03-14 | Compaq Computer Corporation | Failover memory for a computer system |
AU1634600A (en) * | 1998-12-30 | 2000-07-24 | Intel Corporation | Memory array organization |
US6571310B1 (en) * | 2000-04-20 | 2003-05-27 | International Business Machines Corporation | Method and apparatus for managing a heterogeneous data storage system |
US6557083B1 (en) * | 2000-06-30 | 2003-04-29 | Intel Corporation | Memory system for multiple data types |
WO2007042581A1 (es) | 2005-10-10 | 2007-04-19 | Intel Corporation | Reducción de la vulnerabilidad ante errores de software de datos almacenados |
-
2005
- 2005-10-10 WO PCT/ES2005/070144 patent/WO2007042581A1/es active Application Filing
- 2005-10-10 KR KR1020087008486A patent/KR101001068B1/ko not_active IP Right Cessation
- 2005-10-10 CN CN2005800518039A patent/CN101317157B/zh not_active Expired - Fee Related
- 2005-10-10 US US10/563,169 patent/US7558992B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264127A (zh) * | 1999-01-26 | 2000-08-23 | 日本电气株式会社 | 具有冗余存储电路的半导体存储器件 |
CN1639689A (zh) * | 2002-01-29 | 2005-07-13 | 皇家飞利浦电子股份有限公司 | 处理数据的方法、数据存储系统、文件系统和计算机程序产品 |
Non-Patent Citations (1)
Title |
---|
JP特開平5-216778A 1993.08.27 |
Also Published As
Publication number | Publication date |
---|---|
US20070094560A1 (en) | 2007-04-26 |
CN101317157A (zh) | 2008-12-03 |
WO2007042581A1 (es) | 2007-04-19 |
KR101001068B1 (ko) | 2010-12-14 |
KR20080043881A (ko) | 2008-05-19 |
US7558992B2 (en) | 2009-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101317157B (zh) | 减少对于存储数据软件错误的脆弱性 | |
US7797609B2 (en) | Apparatus and method for merging data blocks with error correction code protection | |
US20060156177A1 (en) | Method and apparatus for recovering from soft errors in register files | |
US8990657B2 (en) | Selective masking for error correction | |
CN102117662B (zh) | 用于8-位存储器设备的差错校正机制 | |
CN110352407A (zh) | 纠错码存储器 | |
CN108228396B (zh) | 用于处理驱动器的错误的方法和设备 | |
JPH0136135B2 (zh) | ||
Zhang et al. | Dynamic partitioning to mitigate stuck-at faults in emerging memories | |
US8352812B2 (en) | Protecting data storage structures from intermittent errors | |
US7653829B2 (en) | Method of data placement and control in block-divided distributed parity disk array | |
JP3996623B2 (ja) | ルックアップしたエントリーの重複検出方法および装置 | |
KR100402638B1 (ko) | 리던던트 디바이스 초기화 방법 및 장치 | |
US8924817B2 (en) | Method and apparatus for calculating error correction codes for selective data updates | |
US20170075760A1 (en) | Error protection | |
US8316283B2 (en) | Hybrid error correction code (ECC) for a processor | |
CN105027084A (zh) | 在移动通信系统中控制存储器的装置和方法 | |
US11749343B2 (en) | Memory management device, system and method | |
US5539683A (en) | Method and device for processing, and detecting a state of, binary data | |
CN104281537B (zh) | 一种内存复制方法及装置 | |
CN103514961B (zh) | 自修复存储器、包含该存储器的计算装置以及操作存储器的方法 | |
CN111831486B (zh) | 半导体装置和包括该半导体装置的半导体系统 | |
Papavramidou et al. | An ECC-Based Repair Approach with an Offset-Repair CAM for Mitigating the MBUs Affecting Repair CAM | |
Lelis et al. | Searching with a corrupted heuristic | |
JP2021111325A (ja) | 以前に発生したエラー分析を介してエラー対応動作を選択するためのメモリシステム及びメモリシステムを含むデータ処理システム |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110608 Termination date: 20131010 |