法律状态公告日
法律状态信息
法律状态
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),此时若断电,恢复的是新数据。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
机译: 利用空间统计模型减少数据冗余和熵
机译: 利用空间统计模型来减少数据冗余和熵
机译: 在多通道信号的编码过程中减少冗余的过程和对减少冗余的多通道信号进行解码的设备