《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 非易失性存儲(chǔ)器數(shù)據(jù)掉電保護(hù)的硬件解決方案
非易失性存儲(chǔ)器數(shù)據(jù)掉電保護(hù)的硬件解決方案
2019年電子技術(shù)應(yīng)用第2期
蘇 偉1,2,,馮 曦1,,2,,周芝梅1,2,,胡 毅1,,2,唐曉柯1,,2
1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心,,北京100192
摘要: 對(duì)安全芯片非易失性存儲(chǔ)器(NVM)的數(shù)據(jù)掉電保護(hù)原理進(jìn)行分析,。考慮到軟件的處理速度不能滿足安全芯片對(duì)數(shù)據(jù)存儲(chǔ)的性能要求等因素,,提出一種以硬件方式實(shí)現(xiàn)的NVM數(shù)據(jù)掉電保護(hù)的解決方案,。該方案采用乒乓結(jié)構(gòu),將兩塊同樣大小的Flash空間輪流作為目標(biāo)區(qū)和備份區(qū),,每次更新完成后需要對(duì)備份標(biāo)志及備份次數(shù)進(jìn)行更新,。如果更新過(guò)程中芯片發(fā)生掉電,再次上電后通過(guò)比較兩塊區(qū)域的備份標(biāo)志以及備份次數(shù),,就可以判斷出哪塊區(qū)域的數(shù)據(jù)是有效的,。該方案不但能保證安全芯片非易失性存儲(chǔ)器(NVM)的數(shù)據(jù)掉電不丟,而且能提高NVM數(shù)據(jù)更新的性能,。
中圖分類號(hào): TN41
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181928
中文引用格式: 蘇偉,,馮曦,周芝梅,,等. 非易失性存儲(chǔ)器數(shù)據(jù)掉電保護(hù)的硬件解決方案[J].電子技術(shù)應(yīng)用,,2019,45(2):20-22,,26.
英文引用格式: Su Wei,,F(xiàn)eng 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,F(xiàn)eng 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 引言

    非易失性存儲(chǔ)器(NVM)具有數(shù)據(jù)掉電不丟的特性,因此安全芯片通常用NVM來(lái)存儲(chǔ)應(yīng)用程序,、用戶數(shù)據(jù)和系統(tǒng)文件等,。

    在安全芯片工作過(guò)程中,如果NVM正在進(jìn)行擦除或編程操作時(shí),,因某種原因造成芯片突然掉電,NVM中的數(shù)據(jù)可能被誤改,。由于安全芯片的特殊應(yīng)用,,用戶的關(guān)鍵信息,如密鑰,、余額等,,都存儲(chǔ)于NVM中,如果這些關(guān)鍵信息被誤改,,可能對(duì)用戶造成巨大損失,。為了保證用戶信息安全,安全芯片對(duì)NVM采取了數(shù)據(jù)掉電保護(hù)機(jī)制,,該機(jī)制能夠保證安全芯片無(wú)論何時(shí)掉電,,再上電時(shí)儲(chǔ)于NVM中的數(shù)據(jù)都是可靠的。

    以往對(duì)NVM的掉電保護(hù)都是由軟件實(shí)現(xiàn)的,,芯片需要執(zhí)行幾十條CPU指令才能完成一次數(shù)據(jù)備份和更新,。考慮到軟件執(zhí)行的效率比較低,,本文提出一種硬件實(shí)現(xiàn)方案,。

1 硬件掉電保護(hù)機(jī)制

1.1 保護(hù)原理

    如圖1所示,以Flash為例,在NVM中取一個(gè)page word作為備份區(qū),,目標(biāo)區(qū)域和備份區(qū)域的容量均為一個(gè)page word,。假定目標(biāo)區(qū)域中已有數(shù)據(jù),現(xiàn)在要對(duì)其中一個(gè)page的數(shù)據(jù)進(jìn)行改寫(xiě),,如將A改寫(xiě)為B,。如果直接對(duì)目標(biāo)區(qū)域進(jìn)行改寫(xiě),那么在改寫(xiě)過(guò)程中一旦掉電,,很有可能原有數(shù)據(jù)已被破壞,,但是新的數(shù)據(jù)還未完全寫(xiě)入,那么目標(biāo)區(qū)域中的數(shù)據(jù)就是不可靠的,,也就是說(shuō)既不是原始數(shù)據(jù)也不是新數(shù)據(jù),,這個(gè)結(jié)果可能對(duì)用戶產(chǎn)生比較嚴(yán)重的影響,例如余額被篡改等,。為了防止芯片掉電時(shí)出現(xiàn)不可靠的數(shù)據(jù),,可以采用備份的方式對(duì)數(shù)據(jù)進(jìn)行更新。

wdz2-t1.gif

    當(dāng)CPU發(fā)出寫(xiě)Flash的操作后,,硬件模塊Flash controller將按照下面的步驟進(jìn)行操作:

    (1)將目標(biāo)區(qū)域中的數(shù)據(jù)全部讀出,,將要改寫(xiě)的部分替換成新的數(shù)據(jù)再寫(xiě)入安全芯片的RAM中,如①所示,;

    (2)將RAM中的數(shù)據(jù)搬至備份區(qū)域,,如②所示。當(dāng)要更新的數(shù)據(jù)全部寫(xiě)入備份區(qū),,要對(duì)剛剛寫(xiě)入的數(shù)據(jù)進(jìn)行完整性校驗(yàn),,校驗(yàn)正確則在備份頁(yè)的最后一個(gè)地址寫(xiě)入表示正確的標(biāo)志(特定的32位數(shù)),否則寫(xiě)入表示錯(cuò)誤的標(biāo)志(特定的32位數(shù)),;

    (3)對(duì)目標(biāo)區(qū)域執(zhí)行擦除操作,,如③所示;

    (4)用與步驟(2)相同的方法將RAM中的數(shù)據(jù)搬至目標(biāo)區(qū)域,,但是不需要設(shè)置完整性校驗(yàn)標(biāo)志,,如④所示;

    (5)對(duì)備份區(qū)域執(zhí)行擦除操作,,如⑤所示,。

    上述操作過(guò)程中,芯片在任何時(shí)刻掉電,,重新上電后軟件首先讀取備份區(qū)域的完整性校驗(yàn)標(biāo)志,,并根據(jù)標(biāo)志的狀態(tài)來(lái)判定當(dāng)前數(shù)據(jù)是否有效。如果標(biāo)志為擦除狀態(tài),,則認(rèn)為目標(biāo)區(qū)域的數(shù)據(jù)無(wú)論是舊數(shù)據(jù)還是新數(shù)據(jù)均有效,,否則需要重新執(zhí)行上一次的擦寫(xiě)操作,。

1.2 方案存在的問(wèn)題

    該方案可以對(duì)Flash數(shù)據(jù)起到有效的掉電護(hù)作用,但是芯片執(zhí)行一次數(shù)據(jù)更新需要對(duì)Flash進(jìn)行兩次擦除+兩次編程操作,。眾所周之,,雖然Flash的編程時(shí)間僅為微秒級(jí),但頁(yè)擦除的時(shí)間比較長(zhǎng),,大約需要2~5 ms(依據(jù)一次擦除的容量大小決定時(shí)間長(zhǎng)短),,那么一次數(shù)據(jù)更新操作至少需要4~10 ms,這個(gè)操作時(shí)間顯然是比較長(zhǎng)的,,這對(duì)于性能要求比較高的應(yīng)用是不能接受的,。

2 乒乓式掉電保護(hù)機(jī)制

2.1 存儲(chǔ)器分配原則

    為了解決操作速度慢的問(wèn)題,本節(jié)提出性能更高的乒乓式掉電數(shù)據(jù)保護(hù)機(jī)制,。

    如圖2所示,,在Flash中取兩塊同樣大小的地址空間(仍假定每塊為一個(gè)page word),這兩塊空間的對(duì)應(yīng)關(guān)系是捆綁的,。

wdz2-t2.gif

    以區(qū)域1和區(qū)域1′為例,,雖然它們的物理地址不同,但它們對(duì)應(yīng)的邏輯地址是相同的,,也就是說(shuō)CPU在對(duì)這塊邏輯地址進(jìn)行擦寫(xiě)時(shí),,不需要知道數(shù)據(jù)究竟寫(xiě)在了區(qū)域1還是區(qū)域1′,這完全是由Flash控制器來(lái)分配的,,在這種操作下區(qū)域1和區(qū)域1′輪流作為備份區(qū)和目標(biāo)區(qū),,也就是說(shuō)當(dāng)CPU要對(duì)Flash進(jìn)行第一次更新時(shí),區(qū)域1做備份區(qū)而區(qū)域1′做目標(biāo)區(qū),,第二次更新時(shí)區(qū)域1′做備份區(qū)而區(qū)域1做目標(biāo)區(qū),,以此類推。

2.2 乒乓式掉電保護(hù)原理

    下面具體來(lái)看乒乓式掉電保護(hù)機(jī)制是如果實(shí)現(xiàn)掉電保護(hù)功能的,。

    如圖3所示,區(qū)域1的最后兩個(gè)word地址分別對(duì)應(yīng)cnt1和flag1,,其中cnt1表示區(qū)域1對(duì)應(yīng)的邏輯地址被更新的次數(shù),,flag1表示區(qū)域1內(nèi)除flag1以外的數(shù)據(jù)是否正確,若正確寫(xiě)入“32’haaaa”,,若錯(cuò)誤寫(xiě)入“32’hbbbb”,。同樣的,區(qū)域1′的最后兩個(gè)word地址也對(duì)應(yīng)了具有同樣意義的cnt1′和flag1′,。

wdz2-t3.gif

    假定區(qū)域1和區(qū)域1′的初始狀態(tài)均為擦除狀態(tài),,乒乓式掉電保護(hù)機(jī)制的具體操作步驟如下:

    (1)有第一次寫(xiě)需求時(shí),首先擦除區(qū)域1,,然后將數(shù)據(jù)寫(xiě)入?yún)^(qū)域1,,同時(shí)把cnt1更新為“1”,,表示第1次寫(xiě)入數(shù)據(jù)。確認(rèn)數(shù)據(jù)正確性后將校驗(yàn)結(jié)果寫(xiě)入flag1,,否則不更新flag1,;

    (2)有第二次寫(xiě)需求時(shí),首先擦除區(qū)域1′,,然后將數(shù)據(jù)寫(xiě)入?yún)^(qū)域1′,。接著讀出cnt1,并將cnt1加1得到的值“2”寫(xiě)入cnt1′,,表示第2次寫(xiě)入數(shù)據(jù),。確認(rèn)數(shù)據(jù)正確后將校驗(yàn)結(jié)果寫(xiě)入flag2,否則不更新flag1′,;

    (3)有第三次寫(xiě)需求時(shí),,首先擦除區(qū)域1,然后將數(shù)據(jù)寫(xiě)入?yún)^(qū)域1,。接著讀出cnt1′,,并將cnt1′加1得到的值“3”寫(xiě)入cnt1,表示第3次寫(xiě)入數(shù)據(jù),。確認(rèn)數(shù)據(jù)正確性后將校驗(yàn)結(jié)果寫(xiě)入flag1,,否則不更新flag1;

    (4)以此類推,,之后每一次有更新需求時(shí),,輪流擦寫(xiě)區(qū)域1和區(qū)域1′。

    綜上所述,,可以看出正常情況下cnt1和cnt2永遠(yuǎn)相差“1”,。每次要更新Flash時(shí),都選取cnt值小的那塊區(qū)域進(jìn)行更新,,更新后將原來(lái)的cnt值+2,,得到新的值再寫(xiě)回,確認(rèn)數(shù)據(jù)全部正確后再更新flag,。

    但是如果擦寫(xiě)時(shí)芯片突然掉電,,上述的過(guò)程將被打亂。芯片再次上電時(shí),,首先分別讀出兩塊存儲(chǔ)器的目標(biāo)頁(yè)和對(duì)應(yīng)備份頁(yè)中的全部數(shù)據(jù),,重新計(jì)算flag和flag1,并與存儲(chǔ)于兩塊存儲(chǔ)器中的flag和flag1進(jìn)行比對(duì),。如果flag1和flag1′比對(duì)都是一致的,,則說(shuō)明存儲(chǔ)于兩塊存儲(chǔ)器中的flag1和flag1′均正確,那么計(jì)數(shù)值大的(非擦除值32’hFFFF)那個(gè)區(qū)域就是最后被更新的數(shù)據(jù),;如果存在錯(cuò)誤的flag,,至多只能有一個(gè)是錯(cuò)誤的,,那么錯(cuò)誤的flag對(duì)應(yīng)的那塊Flash一定是在更新時(shí)發(fā)生了掉電,并且掉電發(fā)生時(shí)正在更新flag又沒(méi)更新完,,所以導(dǎo)致flag是錯(cuò)誤的狀態(tài),。依據(jù)flag和cnt判斷數(shù)據(jù)有效性如表1所示。

wdz2-b1.gif

    該方案中備份區(qū)和目標(biāo)區(qū)是交替使用的,,所以每次更新時(shí)只需要對(duì)一塊區(qū)域都進(jìn)行擦除和更新,。那么完成一次數(shù)據(jù)只需要1次擦除+1次寫(xiě),即2~5 ms,,與原有方案相比效率提高了一倍,。

3 結(jié)論

    由硬件電路實(shí)現(xiàn)的乒乓式掉電保護(hù)機(jī)制,不但可以有效地防止掉電數(shù)據(jù)丟失的問(wèn)題,,而且對(duì)提高芯片性能有及大的幫助,。

參考文獻(xiàn)

[1] 黃河清.Flash文件系統(tǒng)中掉電保護(hù)的分析與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2013(6):90-92.

[2] 張金霞,,陳思婕,,喬彩婷.基于Flash的智能卡數(shù)據(jù)掉電保護(hù)機(jī)制設(shè)計(jì)[J].電子技術(shù)與軟件工程,2015(14):216-218.

[3] 扶小飛,,鄭善賢.一種Flash文件系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,,2010(5):174-176.

[4] 王兵,陳軍東.嵌入式系統(tǒng)掉電保護(hù)的一種設(shè)計(jì)方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,,2005(11):28-30.

[5] 李宇.基于單片機(jī)系統(tǒng)可靠性的掉電保護(hù)的研究[J].電子質(zhì)量,,2004(7):53-55.

[6] 王朝輝,陸楓.一種高可靠性的單片機(jī)掉電保護(hù)設(shè)計(jì)[J].武漢科技大學(xué)學(xué)報(bào)(自然科學(xué)版),,2006(4):401-403.

[7] 徐杰,,唐甜,劉曉.一種嵌入式系統(tǒng)電源掉電保護(hù)方法[J].電子測(cè)試,,2016(5):131-132.

[8] 陳粵初,,竇振中.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,1993.



作者信息:

蘇  偉1,,2,,馮  曦1,2,,周芝梅1,,2,,胡  毅1,,2,唐曉柯1,,2

(1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,,北京100192,;

2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心,北京100192)

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。