一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

差错纠正比特的制作方法

2021-07-02 21:13:00 来源:中国专利 TAG:数据处理 装置 公开
差错纠正比特的制作方法

本公开涉及数据处理,具体而言涉及数据处理装置中比特的存储。



背景技术:

在数据处理装置中,存储电路被用于存储数据。虽然经常希望增大存储电路的能力,但这对所采用的电路的尺寸有影响并且因此对该电路(即使在空闲期间)所使用的功率消耗有影响。在数据的存储期间,数据可变得损坏(例如,由于瞬时差错)。防止这个的一种方式是通过使用校验码,校验码是与数据分开存储的并且可用于检测并且在一些情况下纠正数据中的有限数目的差错。然而,一般要求额外的存储空间来存储校验比特,并且这导致了刚才的增大的电路空间和功率消耗的问题。将希望的是,在不简单地添加会导致增大的电路尺寸和功率消耗的额外存储单元的情况下,增大存储电路的有效存储能力可。



技术实现要素:

从第一示例配置来看,提供了一种数据处理装置,包括:存储电路,包括多条线,所述多条线中的每一者包括数据值;以及访问电路,用于一次访问所述多条线中的一对线,所述多条线中的所述一对线包括与所述数据值不同的额外数据值,并且包括多个差错比特,所述多个差错比特用于检测或纠正所述多条线中的所述一对线中的每条线中的数据值中的差错。

从第二示例配置来看,提供了一种数据处理方法,包括:存储多条线,所述多条线中的每一者包括数据值;并且一次访问所述多条线中的一对线,所述多条线中的所述一对线包括与所述数据值不同的额外数据值,并且包括多个差错比特,所述多个差错比特用于检测或纠正所述多条线中的所述一对线中的每条线中的数据值中的差错。

从第三示例配置来看,提供了一种数据处理装置,包括:用于存储多条线的装置,所述多条线中的每一者包括数据值;以及用于一次访问所述多条线中的一对线的装置,所述多条线中的所述一对线包括与所述数据值不同的额外数据值,并且包括多个差错比特,所述多个差错比特用于检测或纠正所述多条线中的所述一对线中的每条线中的数据值中的差错。

附图说明

将参考在附图中图示的本发明的实施例来仅作为示例进一步描述本发明,附图中:

图1根据一些实施例示意性图示了一种装置;

图2a根据一些实施例图示了比特可被存储在存储电路中的第一方式;

图2b根据一些实施例图示了比特可被存储在存储电路中的第二方式;

图3图示了可实现将mte标签编码到差错比特(例如,ecc比特)中的一种方式;

图4根据一些实施例更详细图示了生成电路;

图5根据一些实施例更详细图示了测试电路;

图6根据一些实施例图示了可用于测试两条数据线中的数据值的电路的示例;并且

图7根据一些实施例图示了示出用于装置的操作的过程的流程图。

具体实施方式

在参考附图论述实施例之前,提供对实施例的以下描述。

根据一个示例配置,提供了一种数据处理装置,包括:存储电路,包括多条线,所述多条线中的每一者包括数据值;以及访问电路,用于一次访问所述多条线中的一对线,所述多条线中的所述一对线包括与所述数据值不同的额外数据值,并且包括多个差错比特,这些差错比特用于检测或纠正所述多条线中的所述一对线中的每条线中的数据值中的差错。

在上述方面中,存储线(例如缓存线)对被同时访问。也就是说,响应于针对一条线中的数据的一个访问请求,两条分开存储的存储线被取回。每条线包含有其自己的数据值。同时,该对线共同包含有一系列差错比特。差错比特是将差错纠正算法(例如循环冗余校验(cyclicredundancycheck,crc)算法)应用到数据值而产生的。借助于差错比特,有可能检测数据值中的已被翻转(例如由于瞬时差错)的一个或多个比特。也就是说,如果数据值的一个或多个比特损坏了,则在某种程度上有可能基于根据该数据值所产生的差错比特而检测到该差错。在一些情况下,还可能纠正该差错。由于差错比特的存在,并且存储线是被成对访问的,有可能在该对存储线内存储额外(附加)数据值。这是在不增大存储电路的比特单元的数目的情况下实现的。该额外数据值与该数据值是有区别的,因为该额外数据值不仅仅是该数据值的任意划分。在实践中,这意味着差错比特是基于该数据值产生的,而不是基于该额外数据值产生的。

在一些示例中,该数据处理装置包括:许可电路,用于检查该额外数据值以确定该数据值的访问者是否被许可访问该数据值。该额外数据值因此可被许可电路使用来为该数据值的访问者确定访问许可,以确定该访问者是否被允许访问该数据值。

在一些示例中,额外数据值指示出多条线中包含有该额外值的那对线的拥有者。存在使用额外数据值以便检查访问者是否被许可访问数据值的若干种方式。然而,在一些示例中,额外数据值指示出多条线中包含有该额外数据值的那对线的拥有者。这样,可以假定只有该对线的拥有者被许可访问(读取或写入)该特定的线。

在一些示例中,拥有者是通过与执行环境相关联的识别符来识别的。可通过若干种不同的方式来识别线的拥有者。然而,在一些示例中,拥有者是基于与执行环境相关联的识别符来指示的。例如,识别符可以是以下所列项的识别符:进程、线程、操作系统、虚拟机、cpu、虚拟cpu、机器,或者可以说指令的流在其中执行的其他环境。通常,这样的拥有权可被分割,使得特定的应用被限制不能访问属于另一应用的数据。这使得有可能限制被一个应用使用的个人或机密信息,使得其只被该应用访问。

在一些示例中,额外数据值是mte标签。存储器标签扩展(memorytagextension,mte)标签是一种安全性特征,其中多比特标签(例如,4比特标签)被用于检查例如存储器指针的访问,使得只有与正确标签相关联的特定执行环境才被许可访问。特别地,当执行环境请求存储器分配时,与当前执行环境相关联的mte标签被分配到该块存储器。从此时开始,对存储器的该区域作出的任何存储器访问都必须由具有相同标签的执行环境作出,才能使该访问成功。由其他执行环境作出的访问可被拒绝。

在一些示例中,差错比特是ecc比特。差错纠正码(errorcorrectingcode,ecc)存储器被使用,以便检测和纠正存储器中的数据的损坏。特别地,要被存储在存储器的一条线中的数据值被应用到一算法以便生成一组ecc比特。可在任何时间将这些ecc比特与数据值相比较以便确定对应性是否仍存在。如果没有对应性存在,则可断定该数据值已变得损坏。用于生成ecc比特的算法使得可以检测数据值中的有限数目的差错。特别地,有可能检测数据值中的已被翻转的若干个比特。例如,该算法可以使得能够使用ecc比特以便检测数据值中已被翻转的最多达两个比特。此外,由该算法生成的ecc比特可以使得有可能纠正数据值中已被翻转的比特。换言之,ecc比特可能足以精确地确定哪个或哪些比特已被翻转,使得这些比特可被纠正到适当的值。通常,ecc比特能够检测的差错比它们能够纠正的多一个。例如,ecc比特可以使得它们能够检测数据值中的两个差错并纠正一个差错。

在一些示例中,额外数据值被编码到包括以下两项中的至少一项的一组选定比特中:差错比特中的至少一些、以及构成该数据值的比特中的至少一些。特别地,在一些实施例中,额外数据值被编码到差错比特中的至少一些以及构成数据值的比特中的至少一些中。通过将额外数据值编码到大数目的比特中,有可能提供这样的编码可发生到其中的一个大的空间。当编码空间充分大时,有可能为额外数据值的每个可能值提供唯一的编码。

在一些示例中,差错比特包括编码形式的额外数据值。有若干种方式可以节省空间以便为额外数据值让出地方。然而,在这些示例中,额外数据值是通过将其编码在差错比特本身内而被包括在该对线内的。例如,可以通过使额外数据被编码在这些差错比特内的这样一种方式对差错比特进行有意损坏。额外数据值在差错比特中的该编码意味着差错比特仍可被用来检测和/或纠正数据值中的差错。

在一些示例中,通过对多个选定比特的反转来使额外值被编码到该组选定比特中,其中,多个选定比特的位置指示出该额外值。可以编码额外数据值的一种方式是通过选择性地反转选定比特中的一些。特别地,被反转的比特的位置可用于指示额外值。例如,第一和第二比特的反转可对应于额外值一,第一和第三差错比特的反转可与额外值二相对应,第一和第四差错比特的反转可与额外值三相对应,等等。明显地,不需要比特的每一单个组合来与额外值的不同的可能值相对应。特别地,如果额外值只有有限数目的可能性,则只有该许多不同组合的反转差错比特需要与额外值的不同值相对应。在一些实施例中,在编码空间大的情况下,选定比特中的每个可能比特被用于额外数据值的仅单个可能值。例如,如果有八个选定比特和额外数据值的八个可能值,则每个比特可对应于额外数据值自己的值。

在一些示例中,被反转的多个选定比特的数目最多等于利用差错比特可检测到的差错的数目。通过限制可被反转以便编码额外值的差错比特的数目,有可能继续使用差错比特以便检测和/或纠正值中的差错。明显地,如果被反转的差错比特的数目超过利用差错比特能够检测到的差错的数目,则差错比特不能被用于检测值中的差错。在一些实施例中,被反转的多个差错比特的数目等于利用差错比特可检测到的差错的数目。

在一些示例中,该数据处理装置包括:测试电路,用于对利用多条线中的第一线的数据值生成的至少一些比较差错比特执行反转以产生反转比较差错比特并且执行反转比较差错比特与多条线中的该对线中的第一线中的差错比特的比较,其中,差错比特和反转比较差错比特是利用相同算法从该数据值生成的。在反转了差错比特后,有可能继续使用差错比特以便检测或者纠正数据值中的差错。这可借由测试电路来实现。比较差错比特是利用该数据值和曾用于生成差错比特本身的同一算法生成的。在正常情况下,如果差错比特都没有被反转,则在没有损坏的情况下,我们将预期比较差错比特与差错比特本身相同。然而,在此情形中,差错比特中的一些已被有意反转。通过反转比较差错比特中的一些来确定与差错比特的匹配,有可能要确定哪些比特已被有意反转。这进而使得可能查明额外数据值。

在一些示例中,该数据处理装置包括:多个测试电路,其中,每个测试电路反转不同的比较差错比特;以及分析电路,用于识别多个测试电路中的反转了与差错比特匹配的比较差错比特的测试电路。不是使用一个测试电路来选择性地反转比较差错比特的每个组合,以产生多组反转比较差错比特,并从而确定哪些比特一定经反转,而是有可能提供多个测试电路,其中每个测试电路反转比特的不同组合。这样,有可能并行测试反转比较比特的每个组合。因此我们可以更迅速地确定额外数据值。在实践中,在没有任何数据损坏的情况下,除了一个以外的所有测试电路都将产生比较差错比特与差错比特之间的失配。在其反转比较差错比特与差错比特之间产生匹配的测试电路可用于识别被编码到差错比特中的额外数据值。

在一些示例中,响应于多个测试电路中的每一者产生的反转比较差错比特均与差错比特不同,每个测试电路被适配为执行利用多条线中的该对线中的第二线的数据值生成的额外反转比较比特与多条线中的该对线中的第二线的差错比特之间的额外比较,以便确定该数据值。当然,有可能对差错比特或数据比特的额外损坏已发生——即超出了用于编码额外数据值的有意损坏。在此情形中,每个测试电路将产生与差错比特不同的一组反转比较差错比特。这是因为在数据值或差错比特的损坏发生的情形中,差错比特将不与数据值相对应。在这样的情形中,有可能考虑多条线中的该对线中的第二线。由于额外数据值对于一对中的两条线是相同的,所以有可能利用该对线中的第二线的数据值和差错比特进行相同的比较。一旦以这种方式确定了额外数据值,就有可能再次反转第一线的差错比特——即,撤消曾执行的对第一线的差错比特的有意损坏。这于是进而可用于纠正和/或检测第一线的数据值中的差错。

在一些示例中,该数据处理装置包括:生成电路,用于从数据值生成差错比特,并且反转差错比特中的至少一些,其中,差错比特中的至少一些是基于额外数据值被选择的。生成电路负责在数据值被插入到存储电路中之时生成差错比特。通过选择差错比特中的哪些要被反转,有可能编码不同的额外数据值,如上所说明。

在一些示例中,数据处理装置包括第一操作模式,其中差错比特适合于检测或纠正该多条线中的该对线中的每条线中的数据值中的差错,其中所述数据值被作为单个数据值。额外数据值可被存储在存储电路内而不增大存储电路中的比特单元的数目的另一种方式是将该对线中的每条线中的两个数据值视为单个数据值并且为该单个数据值确定差错比特,而不是产生这样的两组差错比特:每组差错比特指向两条线中的不同线的数据值。这样的实施例利用了如下事实:检测或纠正差错所需的差错比特的数目相对于为其生成差错比特的数据值的大小非线性地增大。特别地,在具有四的汉明距离的算法的情况下,与单差错纠正、双差错检测(singleerrorcorrection,doubleerrordetection,secded)的情况中一样,八个差错纠正比特可与最多达120个数据比特结合使用,而其中只有64个比特在存储有64个数据比特和八个差错比特的寄存器中使用。然而,通过将差错纠正比特的数目增大到九个,可以支持247个数据比特——共同存储128个比特的两个寄存器是足够的。因此,通过将该对线的每一者中的该对数据值视为单个数据值,与两个不同数据值的情况相比将需要更少的差错比特,因为一批137个比特(九个差错纠正比特和两批64个数据比特)少于两批72个比特(两批八个差错纠正比特和两批64个数据比特)。因此可以减少所需差错比特的数目并且这个释放的空间可被使用来存储额外数据值。再一次,额外数据值在如下意义上被保持与数据值有区别:差错比特不涵盖额外值并且不能被用于检测或纠正额外数据值中的差错。

在一些示例中,在第一操作模式中,差错比特跨多条线中的该对线中的每条线分布。也就是说,并不是所有差错比特都存在于单个条线中,而是可改为分布在两条线之间。在一些实施例中,该分割是等分,使得有相等数目的比特位于两条线中的每条线中。

在一些示例中,差错比特位于多条线中的该对线中的每条线中的相同比特位置。这使其在布线方面是高效的,使得关于具有特定功能的特定比特存储在存储电路的每条线内的何处,与布线一致。

在一些示例中,数据处理装置包括第二操作模式,其中多条线中的该对线中的每条线中的差错比特是存储在多条线中的该对线中的该条线中的数据值所特定的;并且数据处理装置包括切换电路,用于在第一操作模式和第二操作模式之间进行切换。该装置可能能够在第一操作模式和第二操作模式之间进行切换,其中在第一操作模式中差错比特将两条线中的数据值视为单个值,而在第二操作模式中,每条线中的差错比特是基于该条线中的数据值生成的,排除掉了该对中的第二条线中的数据值的影响。将会明白,在第一操作模式中,虽然差错检测和纠正仍然是可能的,但这个的能力与第二操作模式相比是受限的。特别地,在第一操作模式中,只可能检测或纠正2n个比特之中的x个差错。然而,在第二操作模式中,有可能检测或纠正n个比特中的x个差错。然而,这个更受限的差错检查和检测能力却提供了更多的存储能力。因此,通过提供切换电路,有可能取决于是希望改善差错纠正和检测能力还是希望增大存储能力而在这两个操作模式之间进行切换。这样的愿望可以基于个案来确定,但也可在激活数据处理装置时确定。这个第二操作模式因此可根本不使用mte标签。然而,在一些实施例中,第二操作模式可对应于其中额外数据(例如,mte标签)被编码在ecc比特内的上述过程。替代地,在一些其他实施例中,上述编码过程作为第三操作模式操作。

现在将参考附图描述特定实施例。

图1根据一些实施例示意性图示了装置100。该装置包括加载/存储单元110,其负责对存储电路160执行访问操作。由加载/存储单元110发出的访问操作被发送到访问电路120,访问电路120从由访问操作提供的访问地址确定存储电路160中的要被访问的特定电路170、180。在这些实施例中,存储电路170、180的每个条目(a-v)包括一组数据比特和一组差错比特。差错比特表示与数据比特相对应的区块码。一旦被取回,数据比特和差错比特就被传递到测试电路150,测试电路150对照差错比特来测试数据比特以确定数据的完好性是否未受损。此测试的结果随后经由访问电路120被传递回加载/存储单元110。

在这些实施例中,存储电路160中的每个条目利用存储器标签扩展(mte)标签,它们是用于检查访问请求的许可以使得只有相关执行环境被许可访问该数据的安全性特征。这些标签被许可电路140对照作为访问请求的一部分提供的相应标签进行检查。在此实施例中,许可电路140形成访问电路的一部分,但在其他实施例中可位于别处。在除了特定条目所属的那个以外的执行环境(例如,线程、进程、操作系统、超级监督者、cpu等等)尝试访问该条目的情况下(例如,在访问请求中提供了非对应mte标签的情况下,或者在访问请求中没有提供mte标签的情况下),则许可电路140将进行干预。这可采取例如提出异常或故障的形式,或者可以简单地使得该访问被注记。如果执行环境具有访问所请求的数据的许可,则许可电路140许可该访问(例如,读取或写入)发生。应注意,许可电路140执行许可检查的确切方式对于本技术而言不是至关重要的。

为存储电路160的特定条目(a-v)存储访问信息的一种方式是将相关mte标签与该条目一起存储。然而,这要求存储电路160的存储空间量被增大。特别地,大数目的比特可能被提供,以便存储与mte标签相对应的额外数据。这因此增大了电路的尺寸也增大了其功率消耗。

在本实施例中,条目或线的对被一起访问。例如,如果对数据条目a作出访问请求,则也可同时访问数据条目b。类似地,如果对线l作出数据访问请求,则访问电路120可使得条目k被同时访问。由于条目被成对访问,所以有可能更高效地利用用于存储区块码(例如ecc比特)的比特。因此,用于访问许可的比特(例如mte标签)可在不增大所需比特单元的数目的情况下被存储。同样地,有可能避免显著增大电路尺寸或功率消耗。此外,这可在不显著影响经由ecc码的差错检测和纠正能力的情况下实现。

提供了生成电路130以便生成ecc比特和mte标签。因此,当数据要与适当的ecc比特和mte标签一起被写入到存储电路160时,生成电路130可用于由加载/存储单元发出的写入请求。

在实践中,将明白,当前实施例不限于使用mte标签,而是可用于存储与用于生成差错比特的数据有区别的各种其他形式的数据。类似地,虽然当前实施例尤其关注ecc比特的使用,但实施例不限于此,而是可考虑其他形式的差错比特。

存在成对访问数据线以允许mte比特与ecc比特一起的高效存储的若干种方式。

图2a图示了第一操作模式,其控制可如何使用比特以便存储mte标签。再一次,提供了一对线2n、2n 1。每条线还包含从比特0到比特63的数据。然而,在此情况下,ecc比特是针对两条线2n、2n 1的数据值的生成。也就是说,ecc比特是基于来自线2n的比特0-63和线2n 1的比特0-63(总计128个比特)的数据生成的。这个过程利用了如下事实:对于给定数据项要求的ecc比特的数目相对于该数据的大小非线性地增大。例如,在secded码(单差错纠正、双差错纠正码)中,需要八个比特来向64比特数据值提供覆盖。然而,只需要九个比特来向128比特数据值提供覆盖。因此,通过为线2n和2n 1中的数据值一起生成ecc码,需要的ecc比特更少。其结果是,原本用于存储两个不同ecc值的剩余比特可转而用于存储mte标签。例如,如图2a中所示,如果ecc比特(总计需要八个比特)均等分割在两条数据线上,则mte标签(需要四个比特)也可均等分割在这两条数据线上。这留下了单个剩余比特(x),其可用于额外存储,或者可用于扩展mte标签空间。

图2b图示了第二操作模式,其控制可如何使用比特来存储mte标签。特别地,对于线2n,比特0-63被用于存储数据。比特64-71随后用于存储与同一条线的数据(比特0-63的数据)相对应的相应ecc码。因此,配对线2n 1具有其自己的从比特0延伸到比特63的数据和其自己的与线2n 1的比特0-63中的数据相对应的、从比特64到71的ecc码。这两条线被作为一对被一起访问。mte标签对于两条线2n、2n 1的每一者将是相同的并且也被存储在两条线中的每一者中。在这些示例中,mte标签是通过有意翻转ecc码中的比特的子集被存储的。通过选择哪些比特被翻转,有可能为mte标签编码不同的值。例如,如果比特的一个组合被翻转,则与比特的第二个组合被翻转相比,mte标签将是不同的。这样,mte标签可被编码在ecc比特内,并且因此作为额外数据值的mte标签可被存储在线2n、2n 1的每一者内,而不需要附加的存储比特。

应注意,在此示例中,被选择用于编码mte标签的比特是ecc比特。然而,在其他实施例中,被选择的比特可以是数据比特,或者可以是一组数据比特和一组ecc比特。通过允许编码在更大的一组比特上发生,有可能提供mte标签的更多可能编码。此外,有可能使比特中的某些唯一对应于特定的mte标签值。

将明白,关于ecc比特确切位于何处以及mte标签确切位于何处(当未被编码在ecc比特内时)的组织是任意的。然而,通过将相关比特放置在两条线中的每一者的相同位置中,可以简化提取相关比特所必要的布线。当然,在一些实施例中,可以有充足的比特以便在单条线中提供所有ecc比特或者所有mte标签比特。然而,由于对两条线中的任一者的访问将要求ecc比特和mte比特两者,所以两条线仍然都被访问。

应注意,其他操作模式也是可能的。例如,在一些实施例中,对于第二操作模式可以提供一种其中没有编码发生的操作模式。替代地,可以对第一操作模式提供下述模式:其中不使用mte标签并且其中ecc比特是每条线中的数据值所特定的。在另外的其他实施例中,可以提供三种操作模式,包括关于图2a和2b描述的两种操作模式,但还包括额外的第三操作模式,其中不发生编码并且其中不使用mte标签。还有其他组合将对于本领域技术人员是清楚的。

图3图示了在第二操作模式中可实现将mte标签编码到ecc比特中的一种方式。此过程是在已为特定数据生成ecc比特之后执行的。对于mte标签的每个不同值,ecc比特的不同组合被反转,如图3中所示。例如,为了表示mte标签“6”,比特号0和4需要被反转。如果要编码mte标签“11”,则ecc比特的比特0和5被反转。在实践中,反转可通过在ecc比特和图3中对于不同mte标签的每一者示出的比特之间执行异或xor操作来实现。因此如果ecc比特是10111011并且mte标签“12”要被编码,则可执行操作10111011xor00100010=10011001。

如先前所述,有可能ecc比特和/或数据比特在第二操作模式中被用于编码mte标签并且通过增大用于编码的比特的数目,使得对于每个编码,唯一反转是可能的。使用ecc比特和数据比特两者允许mte标签的每个值的唯一反转,这避免了混淆共享比特。

图4更详细图示了用于第二操作模式中的生成电路130。如先前所论述,生成电路被用于写入请求以便生成ecc比特并且将额外数据编码到ecc比特中。在图4所示的示例中,由于访问者提供的mte标签是“3”,所以要编码的mte标签是“3”。如图3中所示,mte标签“3”与对比特0和3的反转相对应。返回图4,要被写入到存储电路160的写入数据通过访问电路120的生成电路130。这里,ecc生成电路420用于生成ecc码。此示例中的ecc码被生成为8比特数。每个比特被分开输出并且通过反转器430、440。每个原始比特和该比特的反转形式被传递到复用器。因此可以使用复用器以便确定是原始比特还是反转比特应当作为输出被传递。在实践中,这是经由选择电路470输出的选择信号实现的。在此示例中,由于要编码的mte标签是值“3”,所以这被选择电路470接收,选择电路470传递一信号,该信号使得到复用器450、460中的两个的选择信号选择反转比特而不是原始比特。因此,在比特零和三的情况下,比特的反转形式被输出。在其他情况中,ecc码的非反转形式被输出。这样,其比特已被选择性反转的ecc码被输出,其中选定比特对应于mte标签的特定值。应注意,通过反转由mte标签指示的特定个体比特,则不需要对比特的完整集合执行xor操作。

图5更详细图示了用于第二操作模式中的测试电路150。测试电路150可被使用,以便检查数据的完好性。将明白,在第二操作模式中,ecc比特将被有意反转。特别地,构成ecc码的一些比特被有意反转了。然而,图5中所示的电路并没有因此降低其差错检查能力。特别地,数据与相应的ecc码一起被测试电路150从存储电路160接收。这里,数据和ecc码被传递到多个测试电路500、510、520、530。这些电路中的每一者反转与数据一起存储的ecc比特的不同集合。在实践中,每个测试电路将反转如图3中所示的ecc比特的不同集合。例如,第一测试电路500将反转比特零和一,而第16测试电路530将反转比特四和五。数据比特随后将被对照经修改的ecc码的经修改比特进行检查。可以预期在15或16种情况中,ecc检查将失败。然而,在测试单元500、510、520、530中的一者中,ecc检查应当通过(假定没有发生非有意的损坏)。产生该通过的测试电路因此与被编码在ecc比特内的mte标签相对应。例如,如果测试电路要反转比特二和三并且这将导致有效ecc检查,则已编码的mte标签将是值“5”。计数电路540可用于确定测试电路中是否恰好一个测试电路产生了有效ecc检查并且因此确定ecc比特和数据比特是否匹配。检测电路530可用于确定测试电路500、510、520、530中的哪一个引起了匹配发生并且将此信息转化成相应的mte标签。

在测试电路500、510、520、530的每一者都失败的情况下,或者在多个测试电路500、510、520、530都通过的情况下,数据已变得损坏。多个通过可由于混淆而发生——例如一比特被用在多个不同的反转组合中,就像图3中的情况那样。这里,单个失败可解码成两个潜在mte标签。由于ecc比特已被修改,所以可能无法使用ecc比特来检测和/或纠正损坏。然而,由于数据线是被成对访问的并且由于mte标签对于一对线是相同的,所以有可能使用该对中的第二线来纠正该情形。例如,考虑对图1中的数据线a作出数据访问请求的情形。数据线a和b两者都被取回并传递到测试电路150。如果在测试电路的操作期间,确定存储在数据线a中的数据已损坏,则可使用相同的过程来从数据线b提取mte标签。此时,mte标签可被返回。由于mte标签也指示出在线a和b的差错比特中哪些比特被反转了,所以有可能逆转曾对线a的ecc比特执行的反转。反转于是可被逆转并且逆转的ecc比特可被使用以便按照通常ecc过程来检测和/或纠正数据值。

图6图示了可用于此过程的电路的示例。特别地,先前图示的测试电路150被复制为第一测试电路150a和第二测试电路150b。两个测试电路150a、150b中的每一者包括先前提及的测试电路500、510、520、530。第一测试电路150a接收所请求的数据线,而第二测试电路150b接收形成被访问了的数据线对的另一数据线。第一测试电路150a输出通过或失败信号、所确定的mte标签、以及所确定的数据。第二测试电路150b输出通过/失败信号和mte标签。在实践中,第一测试电路150a和第二测试电路150b输出的mte标签应当是相同的。第一测试电路150a输出的数据被传递到纠正电路560,纠正电路560还接收从第二测试电路150b获得的mte标签。纠正电路560使用所提供的mte标签来逆转已对ecc比特作出的改变。这可通过执行对已关于图3图示的比特的反转来实现。由于mte标签已被提供给纠正电路560,所以要选择的确切比特是已知的。从这里,纠正电路560可使用ecc比特,以便对数据比特执行差错纠正和检测。数据随后被纠正电路560输出。此外,第一测试电路150a输出的ecc信号和数据的数据分量还被提供给复用器570。用于复用器570的选择信号是由第一测试电路150a和第二测试电路150b的每一者输出的两个通过信号构成的。这样,取决于由第一测试电路150a执行的ecc检查是否通过,由第一测试电路150a输出的数据还是由纠正电路560输出的纠正数据被复用器570输出。类似的还有第一测试电路150a和第二测试电路150b输出的mte标签,组合的通过信号被用于在这两个源之间进行选择以便输出被第二复用器580认为有效的mte标签。当然,两个复用器570、580还可被配置为响应于第一测试电路150a和第二测试电路150b输出的两个通过信号都指示差错而输出差错信号。在此情形中,不可能取回数据。

图7图示了示出装置100的操作的过程的流程图600。在步骤602,针对在给定地址的特定存储线接收访问请求。特别地,可以作出访问来读取所请求的线a。在步骤604,存储线及其配对线(例如线b)被取回。在步骤606,确定装置100在哪个操作模式中操作。在ecc比特被分离(例如对于每条线是不同的)的情形中——先前描述的“第一模式”,则在步骤608,从所请求的线提取ecc比特。在步骤610,ecc比特被选择性地反转并且被与数据比特相比较以便确定ecc比特是否匹配数据。这例如可利用图5的电路来实现。在步骤612,确定是否作为在步骤610执行的比较的结果而存在一个ecc通过。如果否,则从另一(配对)线b提取ecc比特。在步骤616,然后利用形成了配对线b的一部分的ecc比特(同样被选择性反转了)和数据比特来执行比较。在步骤618,确定该比较是否引起一个ecc通过。如果是,则在步骤620,所请求线的ecc比特可被纠正。这可通过将与从配对线获得的mte标签相对应的那些ecc比特再次反转来实现。在步骤622,被反转以便实现ecc通过的比特的组合随后被转换成mte标签。该过程随后前进到步骤636,步骤636将在下文论述。如果在步骤618,该比较没有对比特的任何组合给出ecc通过,则过程前进到步骤624,在这里提出异常。这表示不能访问数据值的情形。可能可以重试访问操作。在最坏情况情形中,数据已变得损坏并且系统重置是必要的。如果在步骤612,该比较导致ecc通过,则被反转以便实现ecc通过的比特的组合在步骤626被转换成mte标签,并且该过程前进到步骤636,步骤636在下文论述。

返回到步骤606,如果操作模式是组合ecc码被用于线对(先前描述的“第二模式”),则在步骤628,从该对线提取ecc比特。在步骤630,ecc比特随后被比较。在步骤632,确定ecc比特是否为数据提供了通过或者可用于在失败的情况下纠正数据。如果否,则在步骤634提出异常,因为数据不能被恢复。这可导致例如系统重置。如果ecc比特为数据提供了通过或者可用于纠正数据,则在步骤636提取mte标签并且确定mte通过是否发生。在实践中,这可通过将访问执行环境与mte标签相比较来实现。在执行环境与处理器、线程、操作系统或超级监督者相关联的情形中,可能有必要将执行环境的识别符作为访问请求的一部分来提供。在其他情形中,执行环境对于访问电路120而言可能是显而易见的。例如,如果执行环境与特定处理器id相关联,则这可能对访问电路120是已知的。如果mte通过未发生(如果存在mte失败),则在步骤638提出异常。此异常与许可异常相对应,因为访问执行环境不被许可访问所所请求的数据。否则,在步骤640,所请求的线被返回。

因此,可以明白,通过同时访问存储电路160中的一对线,并且通过小心地使用诸如ecc比特之类的差错比特,可以为没有经历ecc比特的额外数据提供附加的存储空间。因此,对于正被存储的额外数据并不需要额外存储。这意味着电路空间可被保持得较小,这使得功率消耗与必须提供额外存储空间的系统相比也被保持得较小。所描述的过程对于ecc保护过程本身的影响很小。特别地,仍可以使用ecc比特来检测和纠正差错。

在本申请中,词语“被配置为”被用于意指装置的元素具有能够执行定义的操作的配置。在这个上下文中,“配置”指的是硬件或软件的布置或者互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理设备可被编程为执行该功能。“被配置为”并不意味着为了提供定义的操作,装置元素需要被以任何方式改变。

虽然本文已参考附图详细描述了本发明的说明性实施例,但应理解,本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征进行各种组合。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜