首页> 中国专利> 利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法

利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法

摘要

一种利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法,在受事务保护的EEPROM空间中每一页在物理上对应影子页,写数据时根据RAM中的页状态信息将新数据写入影子页并设状态位。读数据时根据RAM中的页状态信息返回数据,提交事务数据时,仅通过对状态位的操作和其CRC的判断使影子页地位提升为当前页,而使之前的当前页降为影子页。丢弃事务处理数据时,根据EEPROM保存的状态位“找到”之前的当前页。本发明在事务处理过程中减少不必要的写EEPROM次数,克服了在事务处理过程中对EEPROM的频繁修改造成的运行速度和对EEPROM寿命的影响,从而提升了事务处理效率。

著录项

  • 公开/公告号CN103377133A

    专利类型发明专利

  • 公开/公告日2013-10-30

    原文格式PDF

  • 申请/专利权人 上海复旦微电子集团股份有限公司;

    申请/专利号CN201210112010.5

  • 申请日2012-04-17

  • 分类号

  • 代理机构上海信好专利代理事务所(普通合伙);

  • 代理人张妍

  • 地址 200433 上海市杨浦区国泰路127号复旦科技园4号楼

  • 入库时间 2024-02-19 20:48:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-12-14

    授权

    授权

  • 2013-11-27

    实质审查的生效 IPC(主分类):G06F12/02 申请日:20120417

    实质审查的生效

  • 2013-10-30

    公开

    公开

说明书

技术领域

本发明涉及嵌入式系统,尤其涉及一种利用空间冗余减少事务处理过程中对EEPROM(电可擦只读存储器)页擦写次数的方法。

背景技术

在对敏感信息诸如交易金额、密码的操作过程中发生中断时,关键是如何保证事务处理机制的完善性,即该事务要么更新成功,要么保持原值。因此对于要求高安全性的设备来说,尤其是智能卡,完善的事务处理尤为重要。

传统的事务处理方法一般分为两种,保存旧数据方法和保存新数据方法:A.保存旧数据方法:

将目标地址的旧值保存在事务处理区里,置事务处理区中数据有效标记,将新数据写入目标地址;清事务处理区中数据有效标记;

需要恢复时将旧数据写回,清事务处理区中数据标志有效标记;

这种方法在发生主动丢弃事务处理数据(abort 处理)逻辑或意外断电后的数据恢复时开销最大(write penalty);

B.保存新数据方法:

将目标地址的新值保存在RAM(随机存储器)中,当发生提交事务处理(commit 处理)逻辑时将RAM中的新数据集复制到事务处理区里,置事务处理区中数据有效标记;将事务处理区中的新数据复制到目标地址;清事务处理区中数据有效标记;需要恢复时将事务处理中的新数据集写回,清事务处理区中数据标志有效标记;

这种方法,新数据被缓存在RAM中,当发生任意EEPROM读操作时,都需要到RAM缓存中进行过滤以不错过其“最新值”(read penalty);

且该方法需要额外的RAM缓存,只适合较小的,应用场景相对固定的环境,否则RAM缓存的大小,任意读操作的缓存搜索过程都会受到挑战。

发明内容

本发明提供一种利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法,该方法以空间上的冗余为代价,在事务处理过程中减少不必要的写EEPROM次数,克服了在事务处理过程中对EEPROM的频繁修改造成的运行速度和对EEPROM寿命的影响,从而提升了事务处理效率。

为了达到上述目的,本发明提供一种利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法,该方法包含以下步骤:

步骤1、使EEPROM中需要受事务处理机制保护的空间中的每一页在物理上对应两个页,其中一页作为当前页PA,另外一页作为影子页PB;

步骤2、分别在RAM中开辟页状态区TR_RAM、在EEPROM中开辟当前页状态区TR_EEPROM和页状态影子区TR_EEPROM_SHADOW,用于存放页状态信息;

步骤3、当发生EEPROM写操作时,CPU根据TR_RAM中的页状态信息将新数据写入影子页中,并修改页状态区TR_RAM的信息,将低位设置为1,当发生EEPROM读操作时,CPU根据TR_RAM中的页状态信息将“最新”的数据返回;

步骤4、判断 逻辑是否需要提交所有事务处理数据,若是,转到步骤5,若否,转到步骤12;

步骤5、对TR_RAM中的页状态信息做相应变换,并保存在页状态区TR_RAM:

步骤6、计算TR_RAM中高字节数据的CRC16值,并将该值写入TR_RAM中低字节开始处; 

步骤7、将TR_RAM中的数据复制入TR_EEPROM_SHADOW;

步骤8、设置一寄存器R用来表征新的TR_EEPROM,使TR_EEPROM与TR_EEPROM_SHADOW的地位互换;

步骤9、将TR_RAM中的CRC清零;

步骤10、擦除TR_EEPROM_SHADOW中的页数据;

步骤11、将TR_EEPROM的高字节信息复制入TR_RAM的高字节,TR_RAM的低字节置零;

步骤12、判断 逻辑是否需要丢弃所有事务处理数据,若是,转到步骤13;

步骤13、将TR_EEPROM的高字节数据复制入TR_RAM,TR_RAM的低字节清零。

所述的步骤2中,每个页的状态由对应页状态区TR_RAM中的两位标记,“高位”表示当前页,“低位”表示影子页中是否有被处理的数据:

00:当前页为PA,影子页PB中无被处理的“新数据”;

01:当前页为PA,影子页PB中有被处理的“新数据”;

10:当前页为PB,影子页PA中无被处理的“新数据”;

11:当前页为PB,影子页PA中有被处理的“新数据”。

所述的步骤5中,对TR_RAM中数据做如下变换:

00à00 (不变);

01à10 (置换当前页,并清除“已缓数据”标记);

10à10 (不变);

11à00 (置换当前页,并清除“已缓数据”标记)。

本方法在任何情况下断电,重上电后,TR_EEPROM与TR_EEPROM_SHADOW中至少有一块的数据与其CRC值匹配:

1、若只有一块匹配,则将其在R中指明为TR_EEPROM,另一块就作为影子;

2、若两块的数据与其CRC分别都匹配,则可随选一个在寄存器R中标记为当前TR_EEPROM,另一块作为影子。

本发明在事务处理过程中减少不必要的写EEPROM次数,克服了在事务处理过程中对EEPROM的频繁修改造成的运行速度和对EEPROM寿命的影响,从而提升了事务处理效率。

附图说明

图1是本发明的流程图;

图2是TR_RAM、TR_EEPROM、TR_EEPROM_SHADOW、PA、PB等的示意图;

图3是TR_RAM在写之前和写之后的状态变化示意图;

图4是TR_RAM在提交事务时状态转换变化示意图;

图5是计算TR_RAM高64字节的CRC16值并且复制入TR_EEPROM_SHADOW的示意图;

图6是表征新TR_EEPROM后,当前页变化的示意图。

具体实施方式

以下根据图1~图6,具体说明本发明的较佳实施例。

如图1所示,本发明提供一种利用空间冗余减少事务处理过程中对EEPROM页擦写次数的方法,包含以下步骤:

步骤1、使EEPROM中需要受事务处理机制保护的空间中的每一页在物理上对应两个页(PA和PB),其中一页作为当前页,另外一页作为影子页;

步骤2、分别在RAM中开辟页状态区TR_RAM、在EEPROM中开辟当前页状态区TR_EEPROM和页状态影子区TR_EEPROM_SHADOW,用于存放页状态信息;

用2个bit来映射EEPROM的页状态;

每个页的状态由对应页状态区TR_RAM中的两位标记,“高位”表示当前页,“低位”表示影子页中是否有被处理的数据:

00:当前页为PA,影子页PB中无被处理的“新数据”;

01:当前页为PA,影子页PB中有被处理的“新数据”;

10:当前页为PB,影子页PA中无被处理的“新数据”;

11:当前页为PB,影子页PA中有被处理的“新数据”;

步骤3、当发生EEPROM写操作时,CPU根据TR_RAM中的页状态信息将新数据写入影子页中,并修改页状态区TR_RAM的信息,将低位设置为1,当发生EEPROM读操作时,CPU根据TR_RAM中的页状态信息将“最新”的数据返回;

步骤4、判断 逻辑是否需要提交所有事务处理数据(Commit Transaction),若是,转到步骤5,若否,转到步骤12;

步骤5、对TR_RAM中的页状态信息做相应变换,并保存在页状态区TR_RAM:

对TR_RAM中数据做如下变换(若由运行的系统处理,则需TR_RAM可见):

00à00 (不变);

01à10 (置换当前页,并清除“已缓数据”标记);

10à10 (不变);

11à00 (置换当前页,并清除“已缓数据”标记);

“已缓数据”就是变换之前影子页里面的数据,这个标记即为低位(01中的那个1变成0);

(注:TR_RAM、TR_EEPROM、TR_EEPROM_SHADOW中的数据结构:所有高位连续存放,所有低位连续存放);

步骤6、计算TR_RAM中高字节数据的CRC16值,并将该值写入TR_RAM中低字节开始处(低字节在执行步骤5后必已全零); 

步骤7、将TR_RAM中的数据复制入TR_EEPROM_SHADOW(只写不擦,上一轮中已擦过);

步骤8、设置一寄存器R用来表征新的TR_EEPROM (使TR_EEPROM与TR_EEPROM_SHADOW的地位互换);

步骤9、将TR_RAM中的CRC清零;

步骤10、擦除TR_EEPROM_SHADOW中的页数据(只擦不写,数据为全0xFF);

步骤11、将TR_EEPROM的高字节信息复制入TR_RAM的高字节,TR_RAM的低字节置零;

步骤12、判断 逻辑是否需要丢弃所有事务处理数据(Abort Transaction),若是,转到步骤13;

步骤13、将TR_EEPROM的高字节数据复制入TR_RAM,TR_RAM的低字节清零。

本方法在任何情况下断电,重上电后,TR_EEPROM与TR_EEPROM_SHADOW中至少有一块的数据与其CRC值匹配:

1、若只有一块匹配,则将其在寄存器R中指明为TR_EEPROM,另一块就作为影子,若影子区不为全0xff,则表示是在执行步骤10时断电,再执行步骤10,擦一遍;

2、若两块的数据与其CRC分别都匹配,则我们无法区分哪块中存放的是最新的页标志信息, 但这种情况只可能发生在执行步骤8或步骤9时,所以无论将哪个作为当前页标记区,EEPROM中的数据都会是完整的(新数据集或旧数据集),因此可随选一个在R中标记为当前TR_EEPROM,另一个作为影子,并执行步骤10,擦一遍;

本实施例以芯片上带64K的EEPROM需要事务处理保护,且每页为128字节为例,详细说明本方法:

64K的 EEPROM总共有512个页,若以两个比特(bit)来印射一个页的状态,那么共需要128字节的存储空间;

使受事务处理机制保护的64K空间里的每个页P在物理上都对应两个页(页PA,页PB),其中一个作为当前页(数据有效),另外一个作为影子页;

在芯片的RAM中开辟128字节空间(TR_RAM[128]),在EEPROM中开辟两块128字节的空间(TR_EEPROM_A[128], TR_EEPROM_B[128], AB互为影子,即若A为本体TR_EEPROM,则B为影子TR_EEPROM_SHADOW,其中TR_EEPROM存放的是当前有效的页状态;

假设逻辑需要对修改敏感信息做事务处理保护,首先CPU根据TR_RAM里面的页状态信息的高位“0101011”(复制于TR_EEPROM保存的有效页状态,代表当前页分别为PAPBPAPBPAPBPB,具体示意图参见图2)将数据分别写入影子页PBPAPBPAPBPAPA,并在TR_RAM置其低位为“1”,状态变化示意图参见图3,当提交事务处理时(Commit Transaction),示意图参见图4,对TR_RAM中的数据做如下变换:

00à00 (不变);

01à10 (置换当前页,并清除“已缓数据”标记);

10à10 (不变);

11à00 (置换当前页,并清除“已缓数据”标记);

此时若发生断电,则TR_RAM上的数据丢失,重新上电时,根据CRC值的匹配情况,读出的还是TR_EEPROM之前的有效当前页状态:“0101011”,即为原始数据;

计算TR_RAM中高64字节数据的CRC16值,写入其低64字节开始处;若此时断电,恢复的也是原始数据;

将计算过CRC16的TR_RAM数据复制到TR_EEPROM_SHADOW,示意图参见图5;若此时断电,恢复时是以TR_EEPROM为主,故还是原始数据;

然后互换TR_EEPROM与TR_EEPROM_SHADOW的地位,即此时TR_EEPROM保存的是最新的页状态信息,示意图参见图6;此时若断电恢复,两块数据的CRC都匹配,故随选一个标记为TR_EEPROM,另外一个作为TR_EEPROM_SHADOW;

之后将TR_RAM中的CRC清零;此时若断电恢复,两块数据CRC都一致,故也是随选一个标记为TR_EEPROM;

最后擦除TR_EEPROM_SHADOW页数据;(只擦不写, 数据为全0xFF),此时若断电,恢复的是新数据。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号