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

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

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

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

1 硬件掉電保護機制

1.1 保護原理

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

wdz2-t1.gif

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

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

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

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

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

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

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

1.2 方案存在的問題

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

2 乒乓式掉電保護機制

2.1 存儲器分配原則

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

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

wdz2-t2.gif

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

2.2 乒乓式掉電保護原理

    下面具體來看乒乓式掉電保護機制是如果實現(xiàn)掉電保護功能的。

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

wdz2-t3.gif

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

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

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

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

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

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

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

wdz2-b1.gif

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

3 結(jié)論

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

參考文獻

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

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

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

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

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

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

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

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



作者信息:

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

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

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

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