《电子技术应用》
您所在的位置:首页 > 模拟设计 > 设计应用 > 非易失性存储器数据掉电保护的硬件解决方案
非易失性存储器数据掉电保护的硬件解决方案
2019年电子技术应用第2期
苏 伟1,2,冯 曦1,2,周芝梅1,2,胡 毅1,2,唐晓柯1,2
1.北京智芯微电子科技有限公司 国家电网公司重点实验室电力芯片设计分析实验室,北京100192; 2.北京智芯微电子科技有限公司 北京市电力高可靠性集成电路设计工程技术研究中心,北京100192
摘要: 对安全芯片非易失性存储器(NVM)的数据掉电保护原理进行分析。考虑到软件的处理速度不能满足安全芯片对数据存储的性能要求等因素,提出一种以硬件方式实现的NVM数据掉电保护的解决方案。该方案采用乒乓结构,将两块同样大小的Flash空间轮流作为目标区和备份区,每次更新完成后需要对备份标志及备份次数进行更新。如果更新过程中芯片发生掉电,再次上电后通过比较两块区域的备份标志以及备份次数,就可以判断出哪块区域的数据是有效的。该方案不但能保证安全芯片非易失性存储器(NVM)的数据掉电不丢,而且能提高NVM数据更新的性能。
中图分类号: TN41
文献标识码: A
DOI:10.16157/j.issn.0258-7998.181928
中文引用格式: 苏伟,冯曦,周芝梅,等. 非易失性存储器数据掉电保护的硬件解决方案[J].电子技术应用,2019,45(2):20-22,26.
英文引用格式: Su Wei,Feng Xi,Zhou Zhimei,et al. Hardware sollution about power fail protective mechanism of non volatile memory[J]. Application of Electronic Technique,2019,45(2):20-22,26.
Hardware sollution about power fail protective mechanism of non volatile memory
Su Wei1,2,Feng Xi1,2,Zhou Zhimei1,2,Hu Yi1,2,Tang Xiaoke1,2
1.State Grid Key Laboratory of Power Industrial Chip Design and Analysis Technology, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China; 2.Beijing Engineering Research Center of High-reliability IC with Power Industrial Grade, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China
Abstract: The principle of data power failure protection for non-volatile memory(NVM) of security chip is analyzed. Considering that the processing speed of software can not meet the performance requirements of security chip for data storage, this paper proposes a NVM data implemented in hardware for power failure protection solution. The scheme adopts a ping-pong structure and takes two Flash spaces of the same size in turn as the target area and the backup area. After each update is completed, the backup flag and the number of backups need to be updated. If the chip is powered off during the update, after comparing the backup codes and backup times of the two areas after power-on again, it can be determined which area of the data is valid. This scheme can not only ensure that the data of the security chip non-volatile memory(NVM) is not lost, but also can improve the performance of NVM data update.
Key words : non volatile memory(NVM);power fail protection;ping-pong;target page;backup page

0 引言

    非易失性存储器(NVM)具有数据掉电不丢的特性,因此安全芯片通常用NVM来存储应用程序、用户数据和系统文件等。

    在安全芯片工作过程中,如果NVM正在进行擦除或编程操作时,因某种原因造成芯片突然掉电,NVM中的数据可能被误改。由于安全芯片的特殊应用,用户的关键信息,如密钥、余额等,都存储于NVM中,如果这些关键信息被误改,可能对用户造成巨大损失。为了保证用户信息安全,安全芯片对NVM采取了数据掉电保护机制,该机制能够保证安全芯片无论何时掉电,再上电时储于NVM中的数据都是可靠的。

    以往对NVM的掉电保护都是由软件实现的,芯片需要执行几十条CPU指令才能完成一次数据备份和更新。考虑到软件执行的效率比较低,本文提出一种硬件实现方案。

1 硬件掉电保护机制

1.1 保护原理

    如图1所示,以Flash为例,在NVM中取一个page word作为备份区,目标区域和备份区域的容量均为一个page word。假定目标区域中已有数据,现在要对其中一个page的数据进行改写,如将A改写为B。如果直接对目标区域进行改写,那么在改写过程中一旦掉电,很有可能原有数据已被破坏,但是新的数据还未完全写入,那么目标区域中的数据就是不可靠的,也就是说既不是原始数据也不是新数据,这个结果可能对用户产生比较严重的影响,例如余额被篡改等。为了防止芯片掉电时出现不可靠的数据,可以采用备份的方式对数据进行更新。

wdz2-t1.gif

    当CPU发出写Flash的操作后,硬件模块Flash controller将按照下面的步骤进行操作:

    (1)将目标区域中的数据全部读出,将要改写的部分替换成新的数据再写入安全芯片的RAM中,如①所示;

    (2)将RAM中的数据搬至备份区域,如②所示。当要更新的数据全部写入备份区,要对刚刚写入的数据进行完整性校验,校验正确则在备份页的最后一个地址写入表示正确的标志(特定的32位数),否则写入表示错误的标志(特定的32位数);

    (3)对目标区域执行擦除操作,如③所示;

    (4)用与步骤(2)相同的方法将RAM中的数据搬至目标区域,但是不需要设置完整性校验标志,如④所示;

    (5)对备份区域执行擦除操作,如⑤所示。

    上述操作过程中,芯片在任何时刻掉电,重新上电后软件首先读取备份区域的完整性校验标志,并根据标志的状态来判定当前数据是否有效。如果标志为擦除状态,则认为目标区域的数据无论是旧数据还是新数据均有效,否则需要重新执行上一次的擦写操作。

1.2 方案存在的问题

    该方案可以对Flash数据起到有效的掉电护作用,但是芯片执行一次数据更新需要对Flash进行两次擦除+两次编程操作。众所周之,虽然Flash的编程时间仅为微秒级,但页擦除的时间比较长,大约需要2~5 ms(依据一次擦除的容量大小决定时间长短),那么一次数据更新操作至少需要4~10 ms,这个操作时间显然是比较长的,这对于性能要求比较高的应用是不能接受的。

2 乒乓式掉电保护机制

2.1 存储器分配原则

    为了解决操作速度慢的问题,本节提出性能更高的乒乓式掉电数据保护机制。

    如图2所示,在Flash中取两块同样大小的地址空间(仍假定每块为一个page word),这两块空间的对应关系是捆绑的。

wdz2-t2.gif

    以区域1和区域1′为例,虽然它们的物理地址不同,但它们对应的逻辑地址是相同的,也就是说CPU在对这块逻辑地址进行擦写时,不需要知道数据究竟写在了区域1还是区域1′,这完全是由Flash控制器来分配的,在这种操作下区域1和区域1′轮流作为备份区和目标区,也就是说当CPU要对Flash进行第一次更新时,区域1做备份区而区域1′做目标区,第二次更新时区域1′做备份区而区域1做目标区,以此类推。

2.2 乒乓式掉电保护原理

    下面具体来看乒乓式掉电保护机制是如果实现掉电保护功能的。

    如图3所示,区域1的最后两个word地址分别对应cnt1和flag1,其中cnt1表示区域1对应的逻辑地址被更新的次数,flag1表示区域1内除flag1以外的数据是否正确,若正确写入“32’haaaa”,若错误写入“32’hbbbb”。同样的,区域1′的最后两个word地址也对应了具有同样意义的cnt1′和flag1′。

wdz2-t3.gif

    假定区域1和区域1′的初始状态均为擦除状态,乒乓式掉电保护机制的具体操作步骤如下:

    (1)有第一次写需求时,首先擦除区域1,然后将数据写入区域1,同时把cnt1更新为“1”,表示第1次写入数据。确认数据正确性后将校验结果写入flag1,否则不更新flag1;

    (2)有第二次写需求时,首先擦除区域1′,然后将数据写入区域1′。接着读出cnt1,并将cnt1加1得到的值“2”写入cnt1′,表示第2次写入数据。确认数据正确后将校验结果写入flag2,否则不更新flag1′;

    (3)有第三次写需求时,首先擦除区域1,然后将数据写入区域1。接着读出cnt1′,并将cnt1′加1得到的值“3”写入cnt1,表示第3次写入数据。确认数据正确性后将校验结果写入flag1,否则不更新flag1;

    (4)以此类推,之后每一次有更新需求时,轮流擦写区域1和区域1′。

    综上所述,可以看出正常情况下cnt1和cnt2永远相差“1”。每次要更新Flash时,都选取cnt值小的那块区域进行更新,更新后将原来的cnt值+2,得到新的值再写回,确认数据全部正确后再更新flag。

    但是如果擦写时芯片突然掉电,上述的过程将被打乱。芯片再次上电时,首先分别读出两块存储器的目标页和对应备份页中的全部数据,重新计算flag和flag1,并与存储于两块存储器中的flag和flag1进行比对。如果flag1和flag1′比对都是一致的,则说明存储于两块存储器中的flag1和flag1′均正确,那么计数值大的(非擦除值32’hFFFF)那个区域就是最后被更新的数据;如果存在错误的flag,至多只能有一个是错误的,那么错误的flag对应的那块Flash一定是在更新时发生了掉电,并且掉电发生时正在更新flag又没更新完,所以导致flag是错误的状态。依据flag和cnt判断数据有效性如表1所示。

wdz2-b1.gif

    该方案中备份区和目标区是交替使用的,所以每次更新时只需要对一块区域都进行擦除和更新。那么完成一次数据只需要1次擦除+1次写,即2~5 ms,与原有方案相比效率提高了一倍。

3 结论

    由硬件电路实现的乒乓式掉电保护机制,不但可以有效地防止掉电数据丢失的问题,而且对提高芯片性能有及大的帮助。

参考文献

[1] 黄河清.Flash文件系统中掉电保护的分析与实现[J].电脑编程技巧与维护,2013(6):90-92.

[2] 张金霞,陈思婕,乔彩婷.基于Flash的智能卡数据掉电保护机制设计[J].电子技术与软件工程,2015(14):216-218.

[3] 扶小飞,郑善贤.一种Flash文件系统的设计和实现[J].微计算机信息,2010(5):174-176.

[4] 王兵,陈军东.嵌入式系统掉电保护的一种设计方法[J].单片机与嵌入式系统应用,2005(11):28-30.

[5] 李宇.基于单片机系统可靠性的掉电保护的研究[J].电子质量,2004(7):53-55.

[6] 王朝辉,陆枫.一种高可靠性的单片机掉电保护设计[J].武汉科技大学学报(自然科学版),2006(4):401-403.

[7] 徐杰,唐甜,刘晓.一种嵌入式系统电源掉电保护方法[J].电子测试,2016(5):131-132.

[8] 陈粤初,窦振中.单片机应用系统设计与实践[M].北京:北京航空航天大学出版社,1993.



作者信息:

苏  伟1,2,冯  曦1,2,周芝梅1,2,胡  毅1,2,唐晓柯1,2

(1.北京智芯微电子科技有限公司 国家电网公司重点实验室电力芯片设计分析实验室,北京100192;

2.北京智芯微电子科技有限公司 北京市电力高可靠性集成电路设计工程技术研究中心,北京100192)