EEPROM中的原子性管理的制作方法

文档序号:16405084发布日期:2018-12-25 20:22阅读:263来源:国知局
EEPROM中的原子性管理的制作方法

本公开一般地涉及电子电路,并且更具体地涉及使用非易失性可重写存储器的电路。本公开更具体地针对电可擦除可编程只读存储器(eeprom)中的原子性管理。

背景技术

eeprom特别是在微控制器中被用于以非易失性的方式存储数据。

在某些应用中,希望确定所执行的事务符合原子性准则。事务的原子性对应于确定存储在存储器中的数据事实上具有可处理且未损坏的状态。这相当于确定非易失性存储器中的数据具有稳定状态(事务之前的状态或有关事务之后的状态)。

事务原子性管理特别地被用于如下应用中,在该应用中电路电源的中断或者偶然或故意干扰的出现可能产生如下状态中的数据的存储,该状态使得数据不可能随后被处理或者使得数据在机密性或完整性方面易受攻击。例如,在微电路卡的领域中,希望确定在有意或偶然地将卡从放置它的读卡器中不合时宜地拔出或拉出的情况下,包含在卡的非易失性存储器中的数据是可靠的。在集成安全模块的电路中,拉出的等同物对应于电路的断电。



技术实现要素:

希望改进eeprom中的原子性管理。

因此,一个实施例提供了验证用于更新eeprom中的数据的操作的原子性的方法,该方法包括在写入该数据的操作期间执行以下步骤:

将至少一个第一标志初始化为第一值并将该值存储在eeprom中;

从eeprom中擦除该数据;

将该数据的值写入eeprom;以及

将第一标志的至少第二值写入eeprom。

根据一个实施例,在读取数据的操作期间,如果第一标志的值对应于第二值,则仅返回数据的值。

根据一个实施例,在数据写入操作期间,执行以下操作:

将第一标志的值与第二值进行比较;以及

如果值相等,则返回数据的值;或者

如果值不同,则返回错误。

根据一个实施例,如果第一标志的值不对应于第二值,则从eeprom擦除数据。

根据一个实施例,如果第一标志的值不对应于第二值,则利用eeprom中的第一值更新至少第一标志的值。

根据一个实施例,第一值对应于擦除。

根据一个实施例,如果第一标志的值对应于第二值,则利用eeprom中的该第二值更新该标志的值。

根据一个实施例,该方法包括连续更新和读取的第一标志和第二标志。

根据一个实施例,如果第二标志的值不对应于第二值,则第一标志和第二标志的值利用它们在eeprom中的各自的第二值来更新。

一个实施例涉及包括eeprom的电子电路以及能够实施验证eeprom中的数据更新操作的原子性的方法的处理器。

在以下结合附图对特定实施例的非限制性描述中将详细讨论前述和其他特征和优点。

附图说明

图1是将要被描述的实施例所应用到的类型的电子电路的示例的框图形式的非常简化的表示;

图2以框图形式示意性地示出了通过实施原子性管理方法的实施例的数据更新的步骤;

图3以框图形式示意性地示出了读出通过实施图2的原子性管理方法写入的数据的方法的实施例的步骤;

图4以框图形式示意性地示出了通过实施原子性管理方法的另一实施例来更新数据的步骤;以及

图5以框图形式示意性地示出了读出通过实施图4的原子性管理方法写入的数据的方法的另一实施例的步骤。

具体实施方式

在不同的附图中相同的元件用相同的附图标记指定。

为了清楚起见,仅示出了对于理解将要描述的实施例有用的那些步骤和元件,并且将对其进行详细描述。特别地,由原子性机制处理的信息的目的地未被详细描述,所描述的实施例与需要原子性处理的常规应用相兼容。

图1以框图形式非常示意性地示出了将要被描述的实施例所应用到的类型的电子电路1(作为示例)的实施例。

电路1包括:

处理单元11(pu),例如状态机、微处理器、可编程逻辑电路等;

一个或多个易失性存储区域12(ram),例如为ram或寄存器类型,以在处理期间临时存储信息(指令、地址、数据);

一个或多个非易失性存储区域,包括用于特别是当电路未被供电时持久存储信息的电可擦除和可编程(eeprom)类型的至少一个存储器13;

在电路1内部的不同元件之间的一个或多个数据、地址和/或控制总线14;以及

与电路1的外部进行通信的例如串行总线类型的输入/输出接口15(i/o)。

电路1还可以集成近场通信类型(nfc)的非接触式通信电路16(clf非接触式前端)。

此外,根据应用,电路1可以集成其他功能,由框17(fct)标示,例如,加密处理器、其他接口、其他存储器等。

为了保证事务的原子性,一旦事务结束并且数据被认为是稳定的,数据在eeprom中的存储应该仅被视为有效。在实践中,当从非易失性存储器中提取所述数据时,原子性管理方法激活数据的处理的指示符,然后一旦处理结束就组织对更新后的数据的存储,处理的指示符然后切换状态。根据事务的性质,原子性可以涉及更多或更少量的数据。

事务的原子性对于银行类型的事务(例如支付)特别重要,其中希望确定在eeprom中所存储的信息(例如电子钱包的余额或购买授权的余额,或验证事务的标识符)被可靠地存储。

一般地,为了保证事务的原子性,将原子性缓冲区用于至主非易失性存储器中的传送,在非易失性存储器中利用初始信息并且然后利用最终信息更新原子性缓冲区。

配备有eeprom的电路中的事务的原子性的管理一般地在两种状态下执行,即,原子性验证算法能够将来自存储器的数据恢复到稳定状态,对应于初始状态或最终状态。然而,这种安全过程的实施通常使用大量的存储器空间和复杂的恢复算法,这些算法并不总是合理的。此外,在eeprom的情况下,数据的多次写入不利地影响存储器寿命和功耗。

下文所描述的实施例提供三态原子性算法,即,能够指示读出数据是:

处于稳定状态,即:

在初始状态下,即,它们没有受到期间出现中断的操作的影响,因此它们处于稳定状态;或者

在最终状态下,即,在没有出现中断的情况下或者在中断出现之前,数据已经被操作修改,因此它们也处于稳定状态;还是:

在未确定或“丢失”状态下,即,数据无法被恢复到对应于初始状态或最终状态的状态。

提供未确定或“不可靠”状态的事实使得能够简化进程执行的持续时间方面的约束,并且减少存储器更新的次数。

这方面在使用寿命和功耗强烈依赖于写入操作次数的eeprom的情况中特别重要。这个问题不一定适用于如下其他类型的存储器,这些存储器在写入操作时消耗较少的功率(eeprom类型存储器通常采用大于十伏的写入电压),或者具有不太关键的预期寿命。

根据所描述的实施例,提供了一个或多个比特(例如,字节)的标志或原子性指示符,其大小独立于要被保护的数据的大小。因此,通过其原子性希望被监测的操作,存储器空间的操作和大小不必被复制,数据在其更新之前不必被复制。

图2以框图形式示意性地示出了通过实施原子性管理方法的实施例的数据更新的步骤。

根据该实施例,原子性管理采用用作要存储在非易失性存储器中的原子性标志或指示符的字(例如,一位或一字节)。

下文中所描述的步骤仅涉及eeprom中的更新,这是关于原子性的关键阶段。实际上,在写入更新之前或之后的对数据的任何操纵使用其存储在寄存器或易失性存储器中的值,并且在电源中断的情况下,非易失性存储器中的数据保持可靠,因为这样的中断在非易失性存储器中的操作期间不发生。

对于其值d被存储在eeprom中的数据的每次更新(框21,更新d),通过将用作非易失性存储器中的标志的字f初始化到已知值(例如,0或m)而开始(框22,f←0)。如果已知值为0,则这实际上相当于擦除字f的操作。

然后,从非易失性存储器中擦除要更新的数据字d(框23,擦除d)。

然后执行字d的新值d至其存储器位置的写入(框24,d←d)。

最后,将与步骤22中使用的初始值不同的已知值(例如,m)写入标志字f(框25,f←m)。

为了考虑三态原子性管理是受关注的,在读取数据d时,无论电源中断出现的时间如何,都必须可以确定数据d是否可靠。

图3以框图形式示意性地示出了读出通过实施图2的原子性管理方法写入的数据的方法的实施例的步骤。

对于数据字d的每次读取(框31,读取),通过读取(框32,读取f)标志f的值而开始。

然后将该值与在写入结束步骤25中存储的与已知值(例如,m)对应的期望值进行比较(框33,f=m?)。

如果测试33是肯定的(框33的输出y),则这意味着数据d是稳定的。然后可以读取数据d(框34,读取d)并且返回值d(框35,返回d)。优选地,步骤34之前是在标志f中确认值m的步骤(框36,f<m)。

步骤33和34的顺序不重要。类似地,步骤36可以在步骤34之后发生。

如果标志f不处于期望值m(框33的输出n),则这意味着数据d不稳定并且读取进程返回错误(框37,返回错误)。优选地,在步骤37之前进行确认标志的初始化值(0)的步骤和确认数据d的擦除的步骤(框38,f←0和框39,d←0)。优选地,为了检测可能的双重拉出,步骤38在步骤39之前施行。因此,如果在步骤38之前施行步骤39,那么会遇到以下情形:其中f的不稳定(不可靠)内容将算法第一次指向(测试33)步骤39和38。如果在已经确认标志f在0处并且出现第二次拉出之前数据d被确认在0处,则f的值可能附带地具有值m并且然后肯定地经过下一测试33。然后这将确认数据d为可靠的,这是不正确的。

使用确认标志f的值处在值0的步骤38来避免伪第一次读取。事实上,在没有确认的情况下,可能会遇到不稳定标志f的情形,其中该标志将交替地以值m读取并且以不同于m的值读取。因此,使用确认来避免两次连续的读取提供不同的结果。擦除数据d的步骤39保证后续读取提供不可处理的结果。

因此可以看出,只要电源中断或写入步骤(图2)出现问题,随后的读取结果返回错误。

图4以框图形式示意性地示出了通过实施原子性管理方法的另一实施例的数据更新的步骤。

与图2的实施例相比较,使用存储在非易失性存储器中的两个标志f1和f2。

因此,对于其值d存储在eeprom中的数据的每次更新(框41,更新d),通过将用作非易失性存储器中的标志的第一字f1初始化为已知值(例如,0)而开始(框42,f1←0),并且将也用作非易失性存储器中的标志的第二字f2初始化为已知值(例如,0)而开始(框42’,f2←0)。

然后,从非易失性存储器中擦除要更新的数据字d(框43,d←0)。

然后执行(框44,d←d)字d的新值d至其存储器位置中的写入。

最后,将与在步骤42处使用的初始化值(0)不同的已知值(例如m2和m1)被写入(框45’,f2←m2和框45,f1←m1)标志字f1和f2中。优选地,在步骤45’和45’处的标志的写入以相对于其步骤42和42’的初始化的相反顺序执行。

图5以框图形式示意性地示出了读出通过实施图4的原子性管理方法写入的数据的方法的另一实施例的步骤。

对于数据字d的每次读取(框51,读取),通过读取(框52,读取f1;框52’,读取f2)标志f1和f2的相应值而开始。

然后比较第一标志f1的值(框53,f1=m1?)与对应于在写入结束步骤45处所存储的已知值(例如,m1)的期望值。

如果标志f1不在期望值m1(框53的输出n),则这意味着数据d不稳定并且读取进程返回错误(框57,返回错误)。优选地,步骤57之前进行确认标志f1和f2的初始化值(0)的步骤(框58,f1←0;框58’,f2←0;框59,d←0)以及确认数据d的擦除的步骤。对于图3的实施例,在初始化值(0)处确认标志的步骤(58和58’)优选地在擦除(59)数据以检测双重拉出之前施行,并且因此避免在第二次读取时验证伪第一次读取。

擦除数据d的步骤59确保后续读取提供不可处理的结果。

如果测试53确认标志f1具有肯定值(框53的输出y),则标志f2的值然后与和存储在写入结束步骤45’处的已知值(例如,m2)对应的期望值进行比较(框53’,f=m2?)。

如果测试53’为肯定(框53’的输出y),并且因此两个测试53和53’连续为肯定,则这意味着数据d是稳定的。然后可读取数据d(框54,读取d)并返回值d(框55,返回d)。相对于图3的实施例的差别在于读取数据d而无需确认标志值。

如果测试53’是否定的(框53’的输出n),这意味着应该重新确认标志的值。然后在读取数据d(框54)和返回值d(框55)之前施行在相应标志f1和f2中确认值m1和m2的步骤(框56,f1←m1;框56’,f2←m2)。

图4和图5的实施例优于图2和图3的实施例的优点在于,它避免了在作为最频繁情况的原子性确认的情况下必须系统地确认标志值。这些值仅在第一标志f1确认数据可靠时第二标志f2出现为伪时才被确认。因此,节省耗时耗力的写入。

步骤52、52’的顺序可以颠倒。此外,可以通过施行步骤52和53并且然后在肯定测试53的情况下施行步骤52’和53’而开始。此外,步骤54可以出现在步骤56和56’之前或者介于步骤56和56’之间。

这里还可以看出,一旦电源中断或写入步骤(图4)出现问题,后续读取的结果就返回错误。

值m1和m2可以彼此相同或不同。

假如与初始化值不同,用于确认原子性的确定值或已知值(m;m1和m2)是无关紧要的。

选择零值(0)作为一个或多个标志的初始化值具有表示擦除的优点。因此,只要没有执行写入或在不稳定数据的情况下,标志就只是空白的存储器单元。

标志f或f1和f2不必具有较大的大小。例如,一位就足够了。然而,根据优选实施例,将选择对应于eeprom的写入粒度的大小,例如,字节。一个优点是,这增强了标志的可靠性,而没有额外的写入成本。例如,可以提供使用字节的某些位来将纠错码与一个或多个标志相关联。在图4和图5的实施例中,可以假设每个标志为一个半字节,以便为每次读取节省一个写入(确认)步骤。

标志f或标志f1和f2可以独立于数据d而被存储在eeprom中,即,不一定在同一存储器页面中。

在所描述的实施例中,在中断的情况下,即如果数据出现不稳定,丢失数据是被接受的。

所描述的实施例的优点是它们避免了必须复制初始值以恢复它,如双态进程中的情况那样。这将节省数据至非易失性存储器中的一次写入,这相当于eeprom的功率和寿命增益,特别是在大数据的情况下。

对于存储在eeprom中的所有数据,并非必须实施原子性验证方法。优选地,其仅针对对于每次读取操作期望确定性地已知数据的稳定或不稳定状态的数据来实施。

已经描述了各种实施例。本领域技术人员将容易想到各种改变、修改和改进。此外,基于上文给出的功能指示以及通过使用本身通常的电路,所描述的实施例的实践实施方式在本领域技术人员的能力范围内。特别地,存储器寻址的组织和适合于控制所述存储器的信号的生成以及这种寻址使用本身通常的技术。

特别地,对应于数据擦除和写入步骤的步骤23(或43)和24(或44)可能不连续并且与使用该数据的算法相关联的处理步骤或操作分开。这些步骤将受到保护,因为在擦除步骤之后电源中断的情况下,数据d将被认为是不稳定的,直到下一次写入,并且最重要的是,数据d由于将被擦除,所以将不可能使用。

这样的改变、修改和改进旨在成为本公开的一部分,并且旨在落入本公开的精神和范围内。相应地,前面的描述仅仅是作为示例,而不旨在限制。

上文所描述各种实施例可以被组合以提供另外的实施例。根据以上详细描述,可以对这些实施例做出这些和其他改变。一般地,在权利要求中,所使用的术语不应该被解释为将权利要求限制为说明书和权利要求中所公开的具体实施例,而是应该被解释为包括所有可能的实施例以及这种权利要求的等同物的全部范围。因此,权利要求不受本公开的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1