一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法及裝置制造方法
【專利摘要】本發(fā)明適用于存儲器的數(shù)據(jù)存儲【技術(shù)領(lǐng)域】,提供了一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法及裝置,所述閃存存儲設(shè)備中包括至少一多層單元閃存,所述方法包括:接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊;將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中;將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。通過本發(fā)明,可有效解決MLC型閃存存儲設(shè)備在以MLC方式進行數(shù)據(jù)寫入時容易出現(xiàn)數(shù)據(jù)錯誤、穩(wěn)定性較差的問題。
【專利說明】一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于存儲器的數(shù)據(jù)存儲【技術(shù)領(lǐng)域】,尤其涉及一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法及裝置。
【背景技術(shù)】
[0002]閃存按照其內(nèi)部構(gòu)架可以分為單層單元閃存(Single-Level Cell,SLC)和多層單元閃存(Mult1-Level Cell,MLC)。SLC的每個浮動?xùn)胖写鎯個位(bit)的信息;MLC的每個浮動?xùn)胖辽俅鎯?個位(bit)的信息。
[0003]SLC數(shù)據(jù)寫入的方式是通過對浮動?xùn)诺碾姾杉与妷?,?jīng)過源極將所存儲的電荷消除,通過這樣的方式,以存儲一個信息位(I代表消除,O代表寫入)。而MLC數(shù)據(jù)寫入的方式則是在浮動?xùn)胖惺褂貌煌娢坏碾姾?,一個浮動?xùn)糯鎯χ辽賰蓚€信息位。對于SLC及MLC而言,同樣容量的單元要存儲一位與存儲多位的穩(wěn)定度和復(fù)雜度不同,SLC比MLC更穩(wěn)定、可靠,且數(shù)據(jù)寫入不容易出錯。
[0004]另外,對于SLC型閃存和MLC型閃存,SLC型閃存中所有的頁都具有寫入速度快以及穩(wěn)定可靠的特性,而MLC型閃存中只有部分頁具有寫入速度快以及穩(wěn)定可靠的特性。通常,將數(shù)據(jù)只寫入上述的“具有寫入速度快且穩(wěn)定可靠的特性的頁”的寫入方式定義為SLC方式寫入,將數(shù)據(jù)寫入MLC型閃存的所有頁定義為MLC方式寫入。
[0005]現(xiàn)有技術(shù)中,單個閃存存儲設(shè)備常常同時采用SLC和MLC或者只采用MLC以提高閃存存儲設(shè)備的存儲容量,這在一定程度上會影響閃存存儲設(shè)備數(shù)據(jù)的穩(wěn)定性及正確性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例的目的在于提供一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法及裝置,以提高閃存存儲設(shè)備數(shù)據(jù)的穩(wěn)定性和正確性。
[0007]本發(fā)明實施例是這樣實現(xiàn)的,一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法,所述閃存存儲設(shè)備中包括至少一多層單元閃存,所述方法包括:
[0008]接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)與入的目標(biāo)地址塊;
[0009]將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中;
[0010]將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
[0011]本發(fā)明實施例的另一目的在于提供一種閃存存儲設(shè)備中數(shù)據(jù)管理的裝置,所述閃存存儲設(shè)備中包括至少一多層單元閃存,所述裝置包括:
[0012]指令接收單元,用于接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊;
[0013]寫入緩存塊單元,用于將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中;
[0014]寫入目標(biāo)地址塊單元,用于將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
[0015]本發(fā)明實施例的再一目的在于提供一種閃存存儲設(shè)備,所述閃存存儲設(shè)備包括所述閃存存儲設(shè)備中數(shù)據(jù)管理的裝置。
[0016]本發(fā)明實施例與現(xiàn)有技術(shù)相比存在的有益效果是:本發(fā)明實施例的閃存存儲設(shè)備在接收到寫指令后,先將寫指令中的待寫入數(shù)據(jù)以SLC方式緩存到緩存塊,然后再以MLC方式將所述緩存塊中的所述待寫入數(shù)據(jù)寫入到目標(biāo)地址塊。本發(fā)明實施例充分利用了 SLC數(shù)據(jù)寫入方式的優(yōu)勢,通過SLC方式將待寫入數(shù)據(jù)先緩存下來,使得包括MLC的閃存存儲設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)較不容易出錯,穩(wěn)定性更高,有效提升閃存存儲設(shè)備的整體性能,具有較強的易用性和實用性。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是本發(fā)明實施例一提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法所適用的系統(tǒng)場景示意圖
[0019]圖2是本發(fā)明實施例二提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法的實現(xiàn)流程圖;
[0020]圖3是本發(fā)明實施例二提供的閃存存儲設(shè)備中數(shù)據(jù)管理的示例圖;
[0021]圖4是本發(fā)明實施例三提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法的實現(xiàn)流程圖;
[0022]圖5是本發(fā)明實施例四提供的閃存存儲設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu)圖;
[0023]圖6是本發(fā)明實施例五提供的閃存存儲設(shè)備的組成結(jié)構(gòu)圖。
【具體實施方式】
[0024]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0025]為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實施例來進行說明。
[0026]實施例一:
[0027]圖1示出了本發(fā)明實施例一提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法所適用的系統(tǒng)場景示意圖,為了便于說明,僅示出了與本實施例相關(guān)的部分。
[0028]如圖1所示,該系統(tǒng)包括主機系統(tǒng)I以及閃存存儲設(shè)備2。
[0029]其中,所述主機系統(tǒng)I為電腦系統(tǒng),包括微處理器11、隨機存取存儲器(RAM)12、數(shù)據(jù)傳輸接口 13以及輸入或輸出裝置14。所述閃存存儲設(shè)備2為包含有至少一多層單元閃存的閃存存儲設(shè)備。
[0030]所述主機系統(tǒng)I通過所述數(shù)據(jù)傳輸接口 13與所述閃存存儲設(shè)備2連接。用戶通過輸入/輸出裝置14發(fā)出寫指令給所述微處理器11,所述微處理器11通過數(shù)據(jù)傳輸接口13將所述寫指令發(fā)送所述閃存存儲設(shè)備2,所述寫指令中包含所述RAM12中的待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入閃存存儲設(shè)備2的目標(biāo)地址塊。[0031]所述閃存存儲設(shè)備2在接收到所述寫指令后,為提高閃存存儲設(shè)備2數(shù)據(jù)的穩(wěn)定性和正確性,先將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備2的緩存塊,然后再以MLC方式將所述緩存塊中的所述待寫入數(shù)據(jù)寫入到目標(biāo)地址塊。
[0032]在本實施例中,所述主機系統(tǒng)為可存儲數(shù)據(jù)的任意系統(tǒng),例如電腦系統(tǒng)、數(shù)碼相機、攝影機、通信裝置、音訊播放器、視訊播發(fā)器等系統(tǒng)。
[0033]需要說明的是,本實施例提供的系統(tǒng)場景只用于解釋本發(fā)明,并不限定本發(fā)明的保護范圍。
[0034]實施例二:
[0035]圖2示出了本發(fā)明實施例二提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法的實現(xiàn)流程,該方法的執(zhí)行主體為圖1所示系統(tǒng)中的閃存存儲設(shè)備2,該方法過程詳述如下:
[0036]在步驟S201中,接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊。
[0037]在本實施例中,所述寫指令包括但不限于以下信息:待寫入的數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入閃存存儲設(shè)備的目標(biāo)地址塊。所述目標(biāo)地址塊是所述閃存存儲設(shè)備中用于存儲所述待寫入數(shù)據(jù)的某一區(qū)塊。所述主機系統(tǒng)為可存儲數(shù)據(jù)的任意系統(tǒng),例如電腦系統(tǒng)、數(shù)碼相機、攝影機、通信裝置、音訊播放器、視訊播發(fā)器等系統(tǒng)。
[0038]在步驟S202中 ,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中。
[0039]由于本發(fā)明實施例主要解決的是MLC型閃存存儲設(shè)備在以MLC方式進行數(shù)據(jù)寫入時容易出現(xiàn)數(shù)據(jù)錯誤、穩(wěn)定性差的問題。因此本實施例在將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中之前,可以先判斷所述目標(biāo)地址塊是否為MLC中的地址塊,若是,再將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中。
[0040]需要說明的是,閃存存儲設(shè)備一般包含多個存儲塊(block),每個存儲塊包含多個頁(page),每個頁包含多個字節(jié)(byte),為了便于理解,將所述閃存存儲設(shè)備中的所有存儲塊按順序標(biāo)示為B0,BI, B2…Bn (η表示所述閃存存儲設(shè)備中存儲塊的數(shù)量)。
[0041]所述緩存塊是指預(yù)先選定的除所述目標(biāo)地址塊之外的一個或多個存儲塊。如當(dāng)前的所述目標(biāo)地址塊為Β0,則可以選擇除了 BO以外的其他存儲塊作為緩存塊,如Β10、Β11等。
[0042]假設(shè)所述待寫入數(shù)據(jù)的數(shù)據(jù)大小剛好占用一個存儲塊(如目標(biāo)地址塊為BO塊),選擇兩個非目標(biāo)地址塊(如BIO、BlD作為緩存塊。如圖3所示,將BlO中包含的所有頁用Ρ100,Ρ101,Ρ102...Ρ10 (η)標(biāo)示,Bll 包含的所有頁用 Ρ110,Ρ111,Ρ112…Pll (η_1),Ρ11(η)標(biāo)示,BO包含的所有頁用Ρ00,Ρ01,Ρ02...Ρ0 (η-Ι),ΡΟ (η)標(biāo)示,通過所述SLC編程方式將所述待寫入數(shù)據(jù)寫入所述緩存塊中,圖3中灰色標(biāo)記的頁(Β10中Ρ100、Ρ102、Ρ10 (η)標(biāo)示的頁以及Bll中Pill、Pll (n-1)標(biāo)示的頁)即為緩存所述待寫入數(shù)據(jù)的頁。
[0043]在步驟S203中,將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
[0044]在本實施例中,通過所述MLC方式將所述緩存塊中的所述待寫入數(shù)據(jù)按順序?qū)懭胨瞿繕?biāo)地址塊的頁中,如圖3所示,將Ρ100、Ρ102、Ρ10 (η)標(biāo)示的頁中的數(shù)據(jù)按照順序?qū)懭肽繕?biāo)地址塊BO的Ρ00、Ρ01、Ρ02中,再將Pill、Pll (n_l)標(biāo)示的頁中的數(shù)據(jù)按照順序?qū)懭肽繕?biāo)地址塊BO的PO (n-1)、PO (η)中。[0045]本發(fā)明實施例利用MLC型閃存存儲設(shè)備中的部分具有寫入速度快且穩(wěn)定可靠的頁的特性,同時結(jié)合使用SLC方式,對MLC型閃存存儲設(shè)備的數(shù)據(jù)寫操作進行改進,使得MLC型閃存存儲設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)較不容易出錯,穩(wěn)定性更高,有效提升閃存存儲設(shè)備的整體性能。
[0046]實施例三:
[0047]圖4示出了本發(fā)明實施例三提供的閃存存儲設(shè)備中數(shù)據(jù)管理方法的實現(xiàn)流程,該方法的執(zhí)行主體為圖1所示系統(tǒng)中的閃存存儲設(shè)備2,該方法過程詳述如下:
[0048]在步驟S401中,接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊;
[0049]在步驟S402中,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中;
[0050]在步驟S403中,將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
[0051]本實施例步驟S401?步驟S403的具體實施過程如實施例二所述,在此不再贅述。
[0052]在步驟S404中,讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行錯誤檢查和糾正(Error Checking and Correction, ECC)校驗;
[0053]在步驟S405中,判斷讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)是否超過ECC閾值,若判斷結(jié)果為“是”,則執(zhí)行步驟S406,若判斷結(jié)果為“否”,則執(zhí)行步驟S407 ;
[0054]在步驟S406中,擦除所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并返回執(zhí)行步驟S403 ;
[0055]或者選取空塊作為所述目標(biāo)地址塊的替換塊,并將所述目標(biāo)地址塊標(biāo)記為無效塊,重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述替換塊,并返回執(zhí)行步驟S403。
[0056]具體的,所述空塊為沒有寫入數(shù)據(jù)的塊,所述無效塊可以作為壞塊不再使用,也可作為備用塊后續(xù)再次使用。
[0057]在步驟S407中,擦除所述緩存塊中的所述待寫入數(shù)據(jù)。
[0058]在本實施例中,可通過寄存計數(shù)器等記錄所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù),當(dāng)對目標(biāo)地址塊中的頁完成ECC解碼時,可以直接從所述寄存計數(shù)器獲取所述目標(biāo)地址塊的錯誤字節(jié)數(shù)。
[0059]其中,所述ECC閾值為ECC碼能檢測并糾正的最大字節(jié)(bit)數(shù)。
[0060]在本實施例中,每份存儲的數(shù)據(jù)都包含一個ECC碼,為了檢測輸出數(shù)據(jù)是否存在錯誤,系統(tǒng)在數(shù)據(jù)讀取時,先生成正確的ECC碼,并將該ECC碼與讀取的數(shù)據(jù)的ECC碼進行比較驗證,如果比較結(jié)果相同,則說明讀取的數(shù)據(jù)正確。如果比較結(jié)果不相同,則說明讀取的數(shù)據(jù)存在錯誤。
[0061]作為本發(fā)明的另一示例,本實施例還可以包括:在系統(tǒng)生成的ECC碼與讀取數(shù)據(jù)的ECC碼比較結(jié)果不相同時,對該讀取數(shù)據(jù)中錯誤數(shù)據(jù)的大小進行檢測,在所述錯誤數(shù)據(jù)的字節(jié)數(shù)等于或者小于預(yù)設(shè)的閾值時(例如:1比特),通過ECC碼對所述錯誤數(shù)據(jù)進行糾正,在所述錯誤數(shù)據(jù)糾正不成功時,再對存儲所述數(shù)據(jù)的目標(biāo)地址塊進行檢測;在所述錯誤數(shù)據(jù)大于預(yù)設(shè)的閾值時,直接進行壞塊檢測。[0062]另外,為了更好的區(qū)分所述存儲塊,本實施例還包括對所述存儲塊的狀態(tài)進行標(biāo)識,所述狀態(tài)標(biāo)識包括“忙”、“空閑”、“壞塊”等。
[0063]本發(fā)明實施例為解決MLC型閃存存儲設(shè)備在以MLC方式進行數(shù)據(jù)寫入時容易出現(xiàn)數(shù)據(jù)錯誤、穩(wěn)定性較差的問題,將SLC數(shù)據(jù)寫入的方式運用到MLC型閃存存儲設(shè)備中,即在MLC型閃存存儲設(shè)備接收到寫指令時,先將寫指令中的待寫入數(shù)據(jù)以SLC方式緩存到緩存塊,然后再以MLC方式將所述緩存塊中的所述待寫入數(shù)據(jù)寫入到目標(biāo)地址塊,并經(jīng)過多次ECC校驗,直至寫入目標(biāo)地址塊的數(shù)據(jù)完全正確,從而保證MLC型閃存存儲設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)的準(zhǔn)確性和穩(wěn)定性,有效提升閃存存儲設(shè)備的整體性能。
[0064]實施例四:
[0065]圖5示出了本發(fā)明實施例四提供的閃存存儲設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分。
[0066]該閃存存儲設(shè)備中數(shù)據(jù)管理裝置可以應(yīng)用于閃存存儲設(shè)備中,可以是運行于閃存存儲設(shè)備內(nèi)的軟件單元、硬件單元或者軟硬件相結(jié)合的單元,也可以作為獨立的掛件集成到閃存存儲設(shè)備中或者運行于閃存存儲設(shè)備的應(yīng)用系統(tǒng)中。
[0067]該閃存存儲設(shè)備中數(shù)據(jù)管理裝置包括指令接收單元51、寫入緩存塊單元52以及寫入目標(biāo)地址塊單元53。其中,各單元的具體功能如下:
[0068]指令接收單元51,用于接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊;
[0069]寫入緩存塊單元52,用于將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中;
[0070]寫入目標(biāo)地址塊單元53,用于將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
[0071]進一步的,所述裝置還包括:
[0072]校驗單元54,用于讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行ECC校驗。
[0073]重新寫入單元55,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過ECC閾值時,擦除所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊;
[0074]或者所述重新寫入單元55,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過ECC閾值時,還可以選取空塊作為所述目標(biāo)地址塊的替換塊,并將所述目標(biāo)地址塊標(biāo)記為無效塊,重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述替換塊。
[0075]具體的,所述空塊為沒有寫入數(shù)據(jù)的塊,所述無效塊可以作為壞塊不再使用,也可作為備用塊后續(xù)再次使用。
[0076]擦除單元56,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)未超過ECC閾值時,擦除所述緩存塊中的所述待寫入數(shù)據(jù)。
[0077]進一步的,所述寫入緩存塊單元52用于:
[0078]判斷所述目標(biāo)地址塊是否為MLC中的地址塊,若是,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中。
[0079]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元或模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護范圍。上述裝置中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0080]實施例五:
[0081]圖6示出了本發(fā)明實施例五提供的閃存存儲設(shè)備的組成結(jié)構(gòu),為了便于說明,僅不出了與本發(fā)明實施例相關(guān)的部分。
[0082]如圖6所示,該閃存存儲設(shè)備2包含主控芯片21,所述主控芯片21上集成有實施例四所述的閃存存儲設(shè)備中數(shù)據(jù)管理裝置211、至少一多層單元閃存22和/或單層單元閃存23。
[0083]在本實施例中,所述主控芯片21通過所述閃存存儲設(shè)備2中數(shù)據(jù)管理裝置211接收寫指令,并將所述寫指令中的待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備2的緩存塊中,將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。其中,所述緩存塊為多層單元閃存22或單層單元閃存23中的緩存塊,所述目標(biāo)地址塊為多層單元閃存22中的存儲塊。
[0084]所述閃存存儲設(shè)備中數(shù)據(jù)管理裝置211的具體實施過程如上所述,在此不再贅述。
[0085]本領(lǐng)域技術(shù)人員可以理解,圖6中示出的組成結(jié)構(gòu)并不構(gòu)成對閃存存儲設(shè)備6的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
[0086]綜上所述,本發(fā)明實施例為解決MLC型閃存存儲設(shè)備在以MLC方式進行數(shù)據(jù)寫入時容易出現(xiàn)數(shù)據(jù)錯誤、穩(wěn)定性較差的問題,將SLC數(shù)據(jù)寫入的方式運用到MLC型閃存存儲設(shè)備中,即在MLC型閃存存儲設(shè)備接收到寫指令時,先將寫指令中的待寫入數(shù)據(jù)以SLC方式緩存到緩存塊,然后再以MLC方式將所述緩存塊中的所述待寫入數(shù)據(jù)寫入到目標(biāo)地址塊,并經(jīng)過多次ECC校驗,直至寫入目標(biāo)地址塊的數(shù)據(jù)完全正確,從而保證MLC型閃存存儲設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)的準(zhǔn)確性和穩(wěn)定性,有效提升閃存存儲設(shè)備的整體性能,具有較強的易用性和實用性。
[0087]本領(lǐng)域普通技術(shù)人員還可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以在存儲于一計算機可讀取存儲介質(zhì)中,所述的存儲介質(zhì),包括R0M/RAM、磁盤、光盤等。
[0088]以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下做出若干等同替代或明顯變型,而且性能或用途相同,都應(yīng)當(dāng)視為屬于本發(fā)明由所提交的權(quán)利要求書確定的專利保護范圍。
【權(quán)利要求】
1.一種閃存存儲設(shè)備中數(shù)據(jù)管理的方法,所述閃存存儲設(shè)備中包括至少一多層單元閃存,其特征在于,所述方法包括: 接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊; 將所述待寫入數(shù)據(jù) 以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中; 將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行ECC校驗; 當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過ECC閾值時,擦除所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行ECC校驗; 當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時,選取空塊作為所述目標(biāo)地址塊的替換塊,并將所述目標(biāo)地址塊標(biāo)記為無效塊,重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述替換塊。
4.如權(quán)利要求2或3所述的方法,其特征在于,所述方法還包括: 當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)未超過ECC閾值時,擦除所述緩存塊中的所述待寫入數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中包括: 判斷所述目標(biāo)地址塊是否為MLC中的地址塊,若是,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中。
6.一種閃存存儲設(shè)備中數(shù)據(jù)管理的裝置,所述閃存存儲設(shè)備中包括至少一多層單元閃存,其特征在于,所述裝置包括: 指令接收單元,用于接收主機系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址塊; 寫入緩存塊單元,用于將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中; 寫入目標(biāo)地址塊單元,用于將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 校驗單元,用于讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行ECC校驗; 重新寫入單元,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過ECC閾值時,擦除所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述目標(biāo)地址塊;擦除單元,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)未超過ECC閾值時,擦除所述緩存塊中的所述待寫入數(shù)據(jù)。
8.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 校驗單元,用于讀取所述目標(biāo)地址塊中的所述待寫入數(shù)據(jù),并對讀取的所述待寫入數(shù)據(jù)進行ECC校驗; 重新寫入單元,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)超過ECC閾值時,選取空塊作為所述目標(biāo)地址塊的替換塊,并將所述目標(biāo)地址塊標(biāo)記為無效塊,重新將所述緩存塊中的所述待寫入數(shù)據(jù)以MLC方式寫入所述替換塊; 擦除單元,用于當(dāng)讀取的所述待寫入數(shù)據(jù)中錯誤數(shù)據(jù)的字節(jié)數(shù)未超過ECC閾值時,擦除所述緩存塊中的所述待寫入數(shù)據(jù)。
9.如權(quán)利要求6所述的裝置,其特征在于,所述寫入緩存塊單元用于: 判斷所述目標(biāo)地址塊是否為MLC中的地址塊,若是,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲設(shè)備的緩存塊中。
10.一種閃存存儲設(shè)備,其特征在于,所述閃存存儲設(shè)備包括權(quán)利要求6至9任一項所述的閃存存儲設(shè)備中數(shù) 據(jù)管理的裝置。
【文檔編號】G06F11/10GK103955430SQ201410133825
【公開日】2014年7月30日 申請日期:2014年4月3日 優(yōu)先權(quán)日:2014年3月31日
【發(fā)明者】梁小慶, 李志雄, 鄧恩華 申請人:深圳市江波龍電子有限公司