本申請要求于2015年12月28日提交的法國專利申請第15/63375號的優(yōu)先權(quán),其全部內(nèi)容以法律可允許的最大程度結(jié)合于此作為參考。
本公開總的來說涉及電子電路,更具體地,涉及使用閃存的電路。更具體地,本公開的目的在于閃存中數(shù)據(jù)存儲的管理。
背景技術(shù):
閃存越來越多地用于微控制器來非易失性地存儲數(shù)據(jù)。
閃存中的數(shù)據(jù)存儲由于所執(zhí)行操作的粒度、通過字節(jié)執(zhí)行的寫入和讀取而具有各種時間約束,同時通過頁面執(zhí)行擦除。
在特定應(yīng)用中,期望確定所執(zhí)行和存儲的交易遵循原子性標準。交易的原子性對應(yīng)于確定存儲在存儲器中的數(shù)據(jù)有效地具有可利用狀態(tài)。這相當于確定非易失性存儲器中的數(shù)據(jù)要么為交易之前的狀態(tài)或者要么為所關(guān)注交易之后的狀態(tài),但是它們不具有中間狀態(tài)。
交易原子性的管理被特別地用于電路電源的中斷或者偶然或故意干擾的發(fā)生可能產(chǎn)生處于以下狀態(tài)的數(shù)據(jù)的存儲的應(yīng)用中,該狀態(tài)使得這些數(shù)據(jù)不能隨后被處理或者在機密性方面易受攻擊。
已知許多原子性管理技術(shù),更具體地,應(yīng)用于所謂的安全交易(例如,銀行交易、訪問控制等)的微控制器中的原子性管理技術(shù)。
技術(shù)實現(xiàn)要素:
期望具有一種閃存中的數(shù)據(jù)存儲的解決方案,其遵循所操作數(shù)據(jù)的原子性的標準。
期望具有尤其適用于基于免接觸通信的交易的解決方案。
因此,實施例提供了一種非易失性存儲器中的數(shù)據(jù)存儲的方法,其中,非易失性存儲器被劃分為:
第一區(qū)域,每個頁面都包括適于包含數(shù)據(jù)的字段和適于包含元數(shù)據(jù)的字段;
第二區(qū)域,每個頁面都包括適于包含數(shù)據(jù)的字段和適于包含元數(shù)據(jù)的字段;
第三區(qū)域,適于包含第一區(qū)域和第二區(qū)域中的操作的進度的指示符,
第一和第二區(qū)域的元數(shù)據(jù)字段分別適于在第一區(qū)域的頁面中的數(shù)據(jù)更新的操作期間包含第二區(qū)域中的頁面以及第一區(qū)域的所述頁面的索引。
根據(jù)一個實施例,具有四個指示符,它們分別指示:
操作的開始;
該操作的特性;
確認該操作的特性的指示符是穩(wěn)定的;以及
該操作的結(jié)束。
根據(jù)一個實施例,順序使用第二區(qū)域的頁面。
根據(jù)一個實施例,對于訪問存儲器中的頁面的每個請求,通過讀取第一區(qū)域中的對應(yīng)頁面的元數(shù)據(jù)字段以確定數(shù)據(jù)是包含在該頁面中還是第二區(qū)域的頁面中來開始。
根據(jù)一個實施例,在對包含在第一區(qū)域的頁面中的數(shù)據(jù)進行原子處理期間,該頁面包含初始數(shù)據(jù)或最終數(shù)據(jù),中間數(shù)據(jù)包含在第二區(qū)域的頁面中。
一個實施例提供了一種管理非易失性存儲器的方法,其中通過應(yīng)用上述方法來存儲數(shù)據(jù)。
一個實施例提供了一種根據(jù)上述方法編程的閃存。
一個實施例提供了包括閃存的電子電路。
以下結(jié)合附圖以及具體實施例的非限制性描述來詳細討論前述和其他特征和優(yōu)勢。
附圖說明
圖1是所描述實施例所適用的類型的電子電路的實例的框圖;
圖2是示出閃存組織模式的框圖;
圖3示出了圖2的存儲器中的數(shù)據(jù)分配的實施例;以及
圖4以框圖形式非常示意性示出了管理圖2的閃存中的存儲的方法實施例。
具體實施方式
在不同的附圖中,相同的元件被標記有相同的參考標號。
為了簡化,僅示出和詳細闡述對于理解將要描述的實施例有用的那些步驟和元件。具體地,沒有詳細描述閃存在寫入、讀取和擦除步驟期間的電行為,所描述的實施例與通常的閃存技術(shù)兼容。此外,也沒有詳細描述使用原子性管理的應(yīng)用,所描述的實施例同樣與通常的應(yīng)用兼容。
在以下描述中,當提到近似、約和大約的描述時,這表示在10%以內(nèi),優(yōu)選在5%以內(nèi)。
圖1以框圖形式非常示意性示出了將要描述的實施例作為實例所適用的類型的電路1的實施例。
電路1包括:
處理單元11(核),例如為狀態(tài)機、微處理器、可編程邏輯電路等;
一個或多個易失性存儲區(qū)域12(ram),例如為ram或寄存器類型,以在處理期間臨時地存儲信息(指令、地址、數(shù)據(jù));
一個或多個非易失性存儲區(qū)域,包括至少一個閃存類型存儲器2(閃存)用于持久地存儲信息,特別地在電路不供電時;
一個或多個數(shù)據(jù)、地址和/或控制總線14,位于電路1內(nèi)的不同元件之間;
輸入/輸出接口15(i/o),例如為串行總線類型,與電路1的外部通信。
在本公開更為具體針對的應(yīng)用中,電路1還集成近場通信類型(nfc)的免接觸通信電路16(clf-免接觸前端)。
此外,電路1可以根據(jù)應(yīng)用(例如,加密處理器、其他接口、其他存儲器等)集成其他功能,它們由框17(fct)表征。
裝備有閃存的電路中的交易的原子性的管理是特別的,這是因為閃存具有頁面粒度而非位或字節(jié)處理粒度,特別地針對擦除而言。閃存從初始狀態(tài)到狀態(tài)0(單元的非傳導(dǎo)狀態(tài))進行編程。這表示存儲單元應(yīng)該設(shè)置為高狀態(tài),并且為了存儲一條數(shù)據(jù),選擇不作用于位狀態(tài)或者將位編程為0。擦除(重置到高初始狀態(tài))需要通過存儲頁面執(zhí)行。頁面被定義為能夠同時被尋址用于擦除的最小尺寸。典型地,在閃存中,目前頁面總計為32、64、128、256、512字節(jié)。實際上,這對應(yīng)于串行接收數(shù)據(jù)以將它們并行傳輸至存儲面用于存儲的寄存器的大小。
為了保證交易的原子性,閃存中的數(shù)據(jù)存儲應(yīng)該僅在交易完成并且數(shù)據(jù)認為是穩(wěn)定時執(zhí)行。實際上,原子性管理方法在從非易失性存儲器中提取數(shù)據(jù)時激活數(shù)據(jù)處理的指示符,然后組織更新數(shù)據(jù)的存儲,一旦處理完成,處理指示符就切換狀態(tài)。原子性可以根據(jù)交易的特性關(guān)注更大或更小的數(shù)據(jù)量(字節(jié))。
交易的原子性在銀行類型的交易(例如,支付)的情況下尤其重要,這需要確定存儲在閃存中的信息(例如,電子錢包或購買授權(quán)的結(jié)算,或者使能交易的標識符)被可靠存儲。
通常,為了保證交易的原子性,利用初始信息并且隨后利用最終信息進行更新的原子性緩沖器被用于到主非易失性存儲器中的傳輸。如果存儲器是閃存,則擦除數(shù)據(jù)的需求由于其頁面粒度而產(chǎn)生問題,這使得與通過字節(jié)執(zhí)行的寫入操作相比,操作相對較長。
在免接觸應(yīng)用中,由于通信的不穩(wěn)定(這與電路1可以與終端通信的時間段相關(guān)),必須非常快速地執(zhí)行交易?,F(xiàn)在,通過使用閃存緩沖器管理交易的原子性由于對于允許編程所必需的擦除操作而花費時間。
根據(jù)將要描述的實施例,提供將閃存劃分為三個區(qū)域,向這三個區(qū)域分配不同的功能。
圖2是示出將圖1的閃存2劃分為三個區(qū)域的框圖。
存儲器2的第一區(qū)域22(稱為主存儲區(qū)域(mma))被分配為存儲不包含在另外兩個區(qū)域(它們具有特定的功能)中的任何信息。例如,在兩個交易之間,實施原子性管理的數(shù)據(jù)處理中穩(wěn)定的信息被存儲在該主存儲器中。
第二區(qū)域24是所謂的高速緩存區(qū)域(ca),其適于在處理期間存儲信息以實施原子性處理。
第三區(qū)域26是所謂的臨時信息區(qū)域(tia),其適于存儲表示使用前兩個區(qū)域的交易的進度的信息,特別地為表示存儲在其他區(qū)域中的數(shù)據(jù)的狀態(tài)的標記。
區(qū)域22和24的每個頁面都包括專用于數(shù)據(jù)存儲的部分以及專用于存儲元數(shù)據(jù)的部分,其中元數(shù)據(jù)提供關(guān)于數(shù)據(jù)的穩(wěn)定性以及其他區(qū)域24或22中的對應(yīng)數(shù)據(jù)的存儲的可能性的信息。區(qū)域22和24中的頁面的使用對于用戶來說是透明的。換句話說,存儲系統(tǒng)可以看作是包括n個頁面的存儲區(qū)域,每個頁面位于主區(qū)域22中或者高速緩存區(qū)域24中。
圖3示出了區(qū)域22和24以及臨時區(qū)域26的頁面的內(nèi)容的實例。假設(shè)主區(qū)域22包含n個頁面,并且高速緩存區(qū)域24包含m個頁面。優(yōu)選地,高速緩存區(qū)域的頁面的數(shù)量m小于或等于n。該數(shù)量決定可在擦除高速緩存區(qū)域之前執(zhí)行的原子更新操作的數(shù)量,因此執(zhí)行相對較長的操作。
區(qū)域22的每個頁面p0、p1、…、pi、…、pn以及區(qū)域24的pc0、…、pcj、…、pcm包括多個字節(jié)的數(shù)據(jù)(例如,b0-b6)以及元數(shù)據(jù)字段(例如,b7)。
初始地,高速緩存區(qū)域24為空,即,頁面被擦除并且所有位都包含狀態(tài)1(ff)。
存儲器2通常裝配有將邏輯地址轉(zhuǎn)換為物理地址的控制器。這里,在用于訪問閃存的請求(讀取或?qū)懭肽J?期間,對于邏輯索引i的頁面,訪問主區(qū)域22中的物理索引i(或該索引的轉(zhuǎn)換)的頁面pi的元數(shù)據(jù)字段b7md。元數(shù)據(jù)指示主存儲器中的頁面的數(shù)據(jù)是否是正確的(實踐中,如果該字段為空,則表示數(shù)據(jù)是正確的)。如果不正確,則元數(shù)據(jù)區(qū)域包含高速緩存頁面(其中存儲包含數(shù)據(jù)的邏輯頁面)的物理索引(地址)pcj。換句話說,區(qū)域22的元數(shù)據(jù)b7md包含具有區(qū)域24中的地址pcj的字段,其在區(qū)域24中處理區(qū)域22的頁面時被編程。
區(qū)域24的頁面——其包含區(qū)域22的數(shù)據(jù)——的元數(shù)據(jù)區(qū)域b7md包含具有區(qū)域22的索引或地址pi的字段b7md(從中提取數(shù)據(jù))以及包含表示頁面使用的標記(即,當該頁面被移動到主區(qū)域22中被編程)的字段。
高速緩存區(qū)域24隨后根據(jù)用于處理包含在區(qū)域2中的數(shù)據(jù)的需求從第一pc0填充到最后一個頁面pcm。因此,只要區(qū)域24不滿,區(qū)域24就可以保持被使用而不需要執(zhí)行擦除。
臨時區(qū)域26用于在交易中斷的情況下保護其他兩個區(qū)域的數(shù)據(jù)內(nèi)容。該區(qū)域包含由四個指示符或標記f0、f1、f2、f3形成的臨時信息。標記分別表示操作的開始(f0)、操作的特性(f1)、確認標記f1是穩(wěn)定的(f2)以及操作的結(jié)束(f3)。臨時信息實際上包含在操作中斷的情況下再存儲數(shù)據(jù)所必需的所有信息。
圖4是示出對包含在區(qū)域22的頁面pi中的數(shù)據(jù)執(zhí)行原子數(shù)據(jù)處理(框30,原子處理)的框圖。
當需要訪問頁面pi時,通過驗證是否已經(jīng)對該頁面發(fā)起原子處理來開始(框31,b7md(pi)=空?)。
如果字段b7md(pi)并未指示區(qū)域24中的頁面pi的地址(框31輸出是),則得自于對頁面pi的數(shù)據(jù)b0-b6執(zhí)行操作(框33,對pi進行操作)的數(shù)據(jù)被存儲在區(qū)域24的第一空閑頁面pcj中(框34,->pcj)。在操作的結(jié)束處,頁面pi和pcj的元數(shù)據(jù)字段被更新以存儲其他頁面的參考(框35,b7md(pi)=pcj,b7md(pcj)=pi)。
實踐中,應(yīng)確定并非所有頁面pcj都已經(jīng)被寫入。為此,在對頁面pi的操作33之前(在圖4所示的實例中)或之后,測試是否存在可用頁面pcj(框32,pcj可用?)。
如果答案是肯定的(框32輸出是),則執(zhí)行步驟33至35(或者如果在操作33之前執(zhí)行測試32,則執(zhí)行步驟34和35)。
如果為否,則擦除區(qū)域24的至少一個頁面pcj(框36),以能夠被再次使用。為此,通過識別對應(yīng)頁面pi(由于頁面pcj的字段b7md包含對應(yīng)頁面pi的地址)來擦除主區(qū)域的頁面p(塊36,擦除p(b7md(pcj)))來開始,該頁面p具有存儲在區(qū)域22中的其他內(nèi)容。然后,頁面pcj的內(nèi)容被傳輸(塊36,pcj->p(b7md(pcj)))到主區(qū)域22中、剛被擦除的頁面pi中。最后,區(qū)域24的頁面pcj被擦除(框36,擦除pcj),然后可以被再次使用。
然后,返回到步驟33(所示情況)或步驟34。
一旦步驟35被執(zhí)行,就測試原子操作是否結(jié)束(框37,ap結(jié)束?)。如果是(框37示出是),則處理結(jié)束(end)。如果否,則返回到步驟31。
根據(jù)可替換實施例,在步驟36中,區(qū)域24的所有頁面pcj都被擦除(框36),以能夠再次使用它們。為此,通過識別對應(yīng)頁面pi(由于頁面pcj的字段b7md包含對應(yīng)頁面pi的地址)來擦除主區(qū)域的所有頁面p(塊36,擦除p(b7md(pcj)))來開始,該頁面p具有存儲在區(qū)域22中的其他內(nèi)容。然后,所有這些頁面pcj的內(nèi)容都被傳輸(塊36,pcj->p(b7md(pcj)))到主區(qū)域22中、剛被擦除的頁面pi中。最后,區(qū)域24的頁面pcj被擦除(框36,擦除pcj),然后可以被再次使用。最后,區(qū)域24的所有頁面pcj都被擦除(框36,擦除pcj)。然后,高速緩存區(qū)域為空,從而隨后被再次使用。
如果在測試31期間,字段b7md(pi)不為空(框31輸出否),并在區(qū)域24中指示頁面pcj的地址,這意味著頁面pi的數(shù)據(jù)b0-b6無效(或者為不穩(wěn)定數(shù)據(jù))。然后,對由頁面pi的字段b7md所識別的頁面pcj的內(nèi)容執(zhí)行操作(框38,對pc(b7md(pi))進行操作)。此外,操作的結(jié)果應(yīng)該存儲在頁面pi中。
為此(框39),擦除包含無效數(shù)據(jù)的頁面pi(框39,擦除pi),頁面pc(b7md(pi))的內(nèi)容被傳輸(框39,pc(b7md(pi))->pi)到擦除后頁面pi,此后頁面pc(b7md(pi))被標為無效(框39,pc(b7md(pi))=無效),使其不會在沒有進行先前擦除的情況下或者作為變形在高速緩存區(qū)域24的整體擦除之前被再次使用。
在臨時區(qū)域26的一側(cè),在對數(shù)據(jù)的操作開始(即,在步驟33或38的開始)時激活標記f0,在步驟33或38的開始時也寫入標記f1和f2以指示操作的特性,并且在測試37之前激活標記f3以指示操作的結(jié)束。
在完成之前中斷原子處理的情況下,標記f1-f3的分析使得能夠確定中斷操作的特性(寫入?yún)^(qū)域22或區(qū)域24中),并且因此定位穩(wěn)定數(shù)據(jù)。因此,最后的穩(wěn)定數(shù)據(jù)總是可以被恢復(fù),無論從區(qū)域22還是區(qū)域24。
所描述的實施例利用編程和擦除的持續(xù)時間的差。實際上,在閃存中,與字節(jié)編程操作相比(通常大約為幾十微秒),頁面擦除操作相對較長(通常大約為幾毫秒)。
還利用了以下事實:通過字節(jié)寫入閃存,這使得通過后續(xù)寫入閃存的交易的處理與交易的原子特性兼容。在閃存中通過全頁面執(zhí)行的讀取的事實并非是不利的。
頁面大小的選擇取決于應(yīng)用以及需要存儲交易的最大尺寸。
所描述實施例的優(yōu)勢在于,它們改善了用于必須遵循原子性標準的操作處理的閃存的管理。
已經(jīng)描述了各個實施例。本領(lǐng)域技術(shù)人員將容易理解各種修改、改變和改進。此外,基于以上給出的功能性指示并且通過使用本身常見的電路,所描述實施例的實踐處于本領(lǐng)域技術(shù)人員的能力之內(nèi)。具體地,對存儲器的尋址的組織以及針對其控制和該尋址所適配的信號的生成利用了本身常見的技術(shù)。
這些修改、改變和改進旨在作為本公開的一部分,并且旨在落于在本發(fā)明的精神和范圍內(nèi)。因此,前面的描述僅僅是作為示例而不旨在于限制。僅通過以下權(quán)利要求及其等效來限定本發(fā)明。