數(shù)據(jù)儲(chǔ)存裝置以及快閃存儲(chǔ)器控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是有關(guān)于數(shù)據(jù)儲(chǔ)存裝置,特別有關(guān)于快閃存儲(chǔ)器(FLASH memory)控制方法。
【背景技術(shù)】
[0002]快閃存儲(chǔ)器是一種常見的非揮發(fā)性存儲(chǔ)器,采電性抹除與編程。以與非門型的快閃存儲(chǔ)器(即NAND FLASH)為例,常用作存儲(chǔ)卡(memory card)、通用序列總線閃存裝置(USB flash device)、固態(tài)硬盤(SSD)…等產(chǎn)品,或?qū)崿F(xiàn)成一嵌入式快閃存儲(chǔ)器模塊(eMMC)??扉W存儲(chǔ)器所提供的儲(chǔ)存陣列是呈多個(gè)區(qū)塊(blocks)。各區(qū)塊包括多個(gè)頁(pages)。若欲釋放一區(qū)塊為閑置區(qū)塊(spare block),整個(gè)區(qū)塊的所有頁都必須一同抹除(erase)。
[0003]關(guān)于數(shù)據(jù)安全(data security),快閃存儲(chǔ)器部分區(qū)塊可配置為回放保護(hù)存儲(chǔ)區(qū)塊(replay-protected memory block,簡稱RPMB),是以較高安全層級(jí)管理之。這些回放保護(hù)存儲(chǔ)區(qū)塊的數(shù)據(jù)管理尤為重要。
【發(fā)明內(nèi)容】
[0004]本發(fā)明揭露一種數(shù)據(jù)儲(chǔ)存裝置以及一種快閃存儲(chǔ)器控制方法。
[0005]根據(jù)本發(fā)明一種實(shí)施方式所實(shí)現(xiàn)的一數(shù)據(jù)儲(chǔ)存裝置包括一控制器以及一快閃存儲(chǔ)器。該快閃存儲(chǔ)器的儲(chǔ)存空間是劃分為多個(gè)區(qū)塊,各區(qū)塊更劃分為多個(gè)頁。該控制器耦接該快閃存儲(chǔ)器,以管理該快閃存儲(chǔ)器的回放保護(hù)存儲(chǔ)區(qū)塊??刂破髟趯㈦p頁數(shù)據(jù)編程入上述回放保護(hù)存儲(chǔ)區(qū)塊后會(huì)將一成功旗標(biāo)以及一寫入計(jì)數(shù)載入該快閃存儲(chǔ)器的系統(tǒng)區(qū)塊。該控制器可基于上述系統(tǒng)區(qū)塊所載的成功旗標(biāo)或/以及上述回放保護(hù)存儲(chǔ)區(qū)塊的編程頁數(shù)執(zhí)行一掉電修復(fù)程序。
[0006]本發(fā)明另一種實(shí)施方式則揭露一種快閃存儲(chǔ)器控制方法,用以管理一快閃存儲(chǔ)器上的至少一回放保護(hù)存儲(chǔ)區(qū)塊。所述控制方法是在雙頁數(shù)據(jù)編程入上述回放保護(hù)存儲(chǔ)區(qū)塊后將一成功旗標(biāo)以及一寫入計(jì)數(shù)載入該快閃存儲(chǔ)器的系統(tǒng)區(qū)塊。根據(jù)所述控制方法,一掉電修復(fù)程序是基于上述系統(tǒng)區(qū)塊所載的成功旗標(biāo)或/以及上述回放保護(hù)存儲(chǔ)區(qū)塊的編程頁數(shù)執(zhí)行。
[0007]下文特舉實(shí)施例,并配合所附附圖,詳細(xì)說明本
【發(fā)明內(nèi)容】
。
【附圖說明】
[0008]圖1以方塊圖圖解根據(jù)本發(fā)明一種實(shí)施方式所實(shí)現(xiàn)的一數(shù)據(jù)儲(chǔ)存裝置100 ;
[0009]圖2圖解主機(jī)106所發(fā)下的回放保護(hù)數(shù)據(jù)是如何由控制器104編程至該快閃存儲(chǔ)器102,其中是設(shè)定一變數(shù)N為2 ;
[0010]圖3為流程圖,說明所揭露的回放保護(hù)存儲(chǔ)區(qū)塊更新成功指標(biāo)RPMB_Update_Success以及寫入計(jì)數(shù)RPMB_Write_Count如何對(duì)應(yīng)圖2所示的回放保護(hù)數(shù)據(jù)編程而變化;以及
[0011]圖4為流程圖,對(duì)應(yīng)圖3圖解一掉電修復(fù)程序。
[0012]【附圖標(biāo)記說明】
[0013]100?數(shù)據(jù)儲(chǔ)存裝置;
[0014]102?快閃存儲(chǔ)器;
[0015]104?控制器;
[0016]106 ?主機(jī);
[0017]202?回放保護(hù)數(shù)據(jù)(又稱RPMB數(shù)據(jù));
[0018]204?虛置數(shù)據(jù);
[0019]206,208?第一、第二幀下達(dá)的RPMB數(shù)據(jù);
[0020]RPMB_1...RPMB_N?回放保護(hù)存儲(chǔ)區(qū)塊;
[0021]RPMB_FAT?文件配置表(FAT)區(qū)塊;
[0022]RPMB_Partit1n?一空間,包括這些回放保護(hù)存儲(chǔ)區(qū)塊RPMB_L...RPMB_N ;
[0023]RPMB_ffrite_Count ?寫入計(jì)數(shù);
[0024]RPMB_Update_Sucess?回放保護(hù)存儲(chǔ)區(qū)塊更新成功指標(biāo);
[0025]S302…S308 ?步驟;
[0026]S402…S410 ?步驟;
[0027]SP0_1...SP0_5?第第五突發(fā)掉電事件。
【具體實(shí)施方式】
[0028]以下敘述列舉本發(fā)明的多種實(shí)施例。以下敘述介紹本發(fā)明的基本概念,且并非意圖限制本
【發(fā)明內(nèi)容】
。實(shí)際發(fā)明范圍應(yīng)依照權(quán)利要求書界定之。
[0029]圖1以方塊圖圖解根據(jù)本發(fā)明一種實(shí)施方式所實(shí)現(xiàn)的一數(shù)據(jù)儲(chǔ)存裝置100。數(shù)據(jù)儲(chǔ)存裝置100包括一快閃存儲(chǔ)器(FLASH memory) 102以及一控制器104。控制器104耦接快閃存儲(chǔ)器102,且根據(jù)主機(jī)106所下達(dá)的指令操作該快閃存儲(chǔ)器102。
[0030]快閃存儲(chǔ)器102的儲(chǔ)存空間是劃分為多個(gè)區(qū)塊(blocks),且各區(qū)塊更劃分為多個(gè)頁(pages)。簡化之,圖中僅顯示與回放保護(hù)存儲(chǔ)區(qū)塊(RPMB)技術(shù)相關(guān)的這些區(qū)塊。如圖所示,快閃存儲(chǔ)器102包括回放保護(hù)存儲(chǔ)區(qū)塊RPMB_1至RPMB_N所形成的空間RPMB_Partit1n。存取回放保護(hù)存儲(chǔ)區(qū)塊RPMB_1至RPMB_N需要認(rèn)證密鑰(authenticat1nkey)。RPMB為回放保護(hù)存儲(chǔ)區(qū)塊的簡寫。主機(jī)(如106)可視所欲更新的RPMB數(shù)據(jù)(回放保護(hù)數(shù)據(jù))的長度以單一巾貞(a single frame)或多個(gè)巾貞(multiple frames)下達(dá)回放保護(hù)數(shù)據(jù)更新指令。自認(rèn)證密鑰所估算出的MAC數(shù)值是附加在最末幀上,交由控制器104辨識(shí)。MAC數(shù)值吻合方能進(jìn)行回放保護(hù)數(shù)據(jù)更新。若MAC數(shù)值不正確,則忽略該回放保護(hù)數(shù)據(jù)更新指令。
[0031]圖中實(shí)施例特別配置文件配置表(FAT)方塊RPMB_FAT作回放保護(hù)數(shù)據(jù)緩沖。主機(jī)106下達(dá)的回放保護(hù)數(shù)據(jù)是先緩沖于FAT方塊RPMB_FAT中。填滿數(shù)據(jù)的FAT方塊RPMB_FAT將被視為回放保護(hù)方塊,納入空間RPMB_Partit1n,再配置快閃存儲(chǔ)器102其他閑置區(qū)塊作新的FAT方塊RPMB_FAT。
[0032]根據(jù)所揭露的技術(shù),不論回放保護(hù)數(shù)據(jù)更新指令所要求更新的回放保護(hù)數(shù)據(jù)尺寸為何,控制器104都是在快閃存儲(chǔ)器102的FAT方塊RPMB_FAT配置N頁對(duì)應(yīng)之。N值是視主機(jī)106單次指令所能下達(dá)的最長RPMB更新數(shù)據(jù)而定。在一種實(shí)施方式中,各巾貞(frame)是用于傳輸256字節(jié)的回放保護(hù)數(shù)據(jù)以及256字節(jié)的更新信息(如,4字節(jié)的寫入計(jì)數(shù)、2字節(jié)的更新地址、2字節(jié)的錯(cuò)誤感測(cè)碼、32比特的MAC數(shù)值…等)。若指令要求更新的回放保護(hù)數(shù)據(jù)尺寸為256字節(jié),主機(jī)106是以單一幀下達(dá)回放保護(hù)數(shù)據(jù)更新要求。若指令要求更新的回放保護(hù)數(shù)據(jù)尺寸為512字節(jié),大于單一幀的傳輸力,主機(jī)106是以兩幀下達(dá)回放保護(hù)數(shù)據(jù)更新要求。在回放保護(hù)數(shù)據(jù)的最長更新尺寸為512字節(jié)的狀況下,N值應(yīng)當(dāng)設(shè)定為2??刂破?04將針對(duì)每次回放保護(hù)數(shù)據(jù)更新都在FAT區(qū)塊RPMB_FAT配置兩頁空間,無論所要求更新的回放保護(hù)數(shù)據(jù)為256字節(jié)或512字節(jié)。若主機(jī)106僅要求256字節(jié)的回放保護(hù)數(shù)據(jù)更新,控制器104會(huì)以虛置數(shù)據(jù)(dummy data)搭配該256字節(jié)的回放保護(hù)數(shù)據(jù)將所對(duì)應(yīng)配置的兩頁空間填滿。如此一來,每次成功完成的回放保護(hù)數(shù)據(jù)更新應(yīng)當(dāng)在FAT區(qū)塊RPMB_FAT對(duì)應(yīng)有兩頁有效頁(N=2)。
[0033]此外,回放保護(hù)數(shù)據(jù)更新信息(例如,本案所建議的RPMB更新成功旗標(biāo)RPMB_Update_Success以及應(yīng)用于RPMB管理的寫入計(jì)數(shù)RPMB_Write_Count)可記載于快閃存儲(chǔ)器102的系統(tǒng)區(qū)塊Sys_Blk。在其他實(shí)施方式中,系統(tǒng)區(qū)塊也可以是快閃存儲(chǔ)器的一 FAT區(qū)塊。特別是,更新成功旗標(biāo)RPMB_Update_Success以及寫入計(jì)數(shù)RPMB_Write_Count是共用同一頁紀(jì)載。每當(dāng)FAT區(qū)塊RPMB_FAT上配置的N頁全數(shù)寫入數(shù)據(jù),控制器104會(huì)豎立該RPMB更新成功旗標(biāo)RPMB_Update_Success (例如,呈一成功旗標(biāo))、且更新該寫入計(jì)數(shù)RPMB_fcite_Count。該RPMB更新成功旗標(biāo)RPMB_Update_Success的豎立是與該寫入計(jì)數(shù)RPMB_ffrite_Count的更新綁在一起進(jìn)行。因此,RPMB更新成功旗標(biāo)RPMB_Update_Success可靠度極高。
[0034]在一掉電修復(fù)程序中,控制器104將檢查上述FAT區(qū)塊RPMB_FAT或/以及上述RPMB更新成功旗標(biāo)RPMB_Update_Success,以辨識(shí)先前是否有發(fā)生掉電事件,且更辨識(shí)該掉電事件發(fā)生的時(shí)間點(diǎn)。在掉電修復(fù)程序中,控制器104若發(fā)現(xiàn)FAT區(qū)塊RPMB_FAT的有效頁數(shù)量為N的倍數(shù),且RPMB更新成功旗標(biāo)RPMB_Update_Success為豎立狀態(tài),控制器104會(huì)認(rèn)可最后配置的N頁上寫入的數(shù)據(jù)。
[0035]在某些實(shí)施方式中,控制器104維持RPMB更新成功旗標(biāo)RPMB_Update_Success呈豎立狀態(tài),直至下一輪配置的N頁中的起始頁被寫入數(shù)據(jù)方除能該RPMB更新成功旗標(biāo)RPMB_Update_Success。在掉電修復(fù)程序中,若控制器104發(fā)現(xiàn)FAT區(qū)塊RPMB_FAT的有效頁數(shù)量并非N的倍數(shù),控制器104會(huì)忽略最末的RPMB更新。此外,倘若控制器104在掉電修復(fù)中發(fā)現(xiàn)RPMB更新成功旗標(biāo)RPMB_Update_SuCCesS并沒有被豎立,控制器104也會(huì)忽略最末的RPMB更新。在掉電修復(fù)程序中,若控制器104發(fā)現(xiàn)FAT區(qū)塊RPMB_FAT的有效頁數(shù)量為N的倍數(shù)、且RPMB更新成功旗標(biāo)RPMB_Update_Success更新成功旗標(biāo)RPMB_Update_Success也是豎立狀態(tài),控制器104確認(rèn)每次RPMB更新的數(shù)據(jù)同步。
[0036]圖2圖解主機(jī)106下達(dá)的回放保護(hù)數(shù)據(jù)更新要求如何由控制器104執(zhí)行,圖中將N值設(shè)定為2。當(dāng)主機(jī)106以單一幀下達(dá)尺寸較小(例如,256字節(jié))的回放保護(hù)數(shù)據(jù)更新,控制器104除了對(duì)快閃存儲(chǔ)器102作第一寫入操作,將主機(jī)106所下達(dá)的回放保護(hù)數(shù)據(jù)202寫入該FAT區(qū)塊RPMB_FAT上配置的第一頁空間,更會(huì)作第二寫入操作,將虛置數(shù)據(jù)204寫入該FAT區(qū)塊RPMB_FAT上配置的第二頁空間。當(dāng)主機(jī)106以雙幀下達(dá)尺寸較大(例如,512字節(jié))的回放保護(hù)數(shù)據(jù)更新,控制器104是將雙幀下達(dá)的回放保護(hù)數(shù)據(jù)分階段作寫入。如圖所示,第一幀下達(dá)的回放保護(hù)數(shù)據(jù)206是經(jīng)由以一第一寫入操作寫入該FAT區(qū)塊RPMB_FAT上配置的第一頁空間,并且,第二幀下達(dá)的回放保護(hù)數(shù)據(jù)208是經(jīng)由以一第二寫入操作寫入該FAT區(qū)塊RPMB_FAT上配置的第二頁空間。
[0037]圖3為流程圖,圖解RPMB更新成功