欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置制造方法

文檔序號(hào):6543434閱讀:135來源:國(guó)知局
一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置制造方法
【專利摘要】本發(fā)明適用于存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,提供了一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置,所述方法包括:接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址;判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致;若不一致,則通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。通過本發(fā)明,可有效提高閃存存儲(chǔ)設(shè)備數(shù)據(jù)寫入的正確性和穩(wěn)定性。
【專利說明】一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置。
【背景技術(shù)】
[0002]閃存存儲(chǔ)設(shè)備按照其內(nèi)部構(gòu)架可以分為單層單元閃存(Single-Level Cell, SLC)和多層單元閃存(Mult1-Level Cell,MLC)。閃存內(nèi)部包含多個(gè)存儲(chǔ)塊(block),每個(gè)存儲(chǔ)塊包含多個(gè)頁(yè)(page),每個(gè)頁(yè)又包含多個(gè)字節(jié)(byte)。
[0003]現(xiàn)有的SLC型閃存中所有的頁(yè)都具有寫入速度快以及穩(wěn)定可靠的特性,而MLC型閃存中只有部分頁(yè)具有寫入速度快以及穩(wěn)定可靠的特性。通常,將數(shù)據(jù)只寫入上述的“具有寫入速度快且穩(wěn)定可靠的特性的頁(yè)”的寫入方式定義為SLC方式寫入,將數(shù)據(jù)寫入MLC型閃存的所有頁(yè)的寫入方式定義為MLC方式寫入。
[0004]然而,在對(duì)閃存存儲(chǔ)設(shè)備以SLC方式進(jìn)行數(shù)據(jù)寫入,即對(duì)閃存存儲(chǔ)設(shè)備中具有寫入速度快且穩(wěn)定可靠的特性的頁(yè)包含的存儲(chǔ)單元進(jìn)行放電時(shí),可能會(huì)出現(xiàn)放電過程易受到干擾、放電不徹底或者不能較精確的控制每個(gè)存儲(chǔ)單元的充放電電壓的情況導(dǎo)致寫入的數(shù)據(jù)容易出錯(cuò),從而可能會(huì)出現(xiàn)如圖1所示的待寫入數(shù)據(jù)與實(shí)際寫入的數(shù)據(jù)不一致的情況,影響閃存存儲(chǔ)設(shè)備數(shù)據(jù)寫入的正確性和穩(wěn)定性。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例的目的在于提供一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法及裝置,以提高閃存存儲(chǔ)設(shè)備數(shù)據(jù)寫入的正確性和穩(wěn)定性。
[0006]本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法,所述方法包括:
[0007]接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;
[0008]以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址;
[0009]判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致;
[0010]若不一致,則通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
[0011]本發(fā)明實(shí)施例的另一目的在于提供一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的裝置,所述裝置包括:
[0012]指令接收單元,用于接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;
[0013]寫入單元,用于以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址;
[0014]判斷單元,用于判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致;[0015]處理單元,用于在所述判斷單元判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
[0016]本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比存在的有益效果是:本發(fā)明實(shí)施例的閃存存儲(chǔ)設(shè)備在接收到寫指令后,以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,并判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致,若不一致,則通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,直到寫入所述目標(biāo)地址的數(shù)據(jù)與所述待寫入數(shù)據(jù)完全一致。通過本發(fā)明實(shí)施例有效的解決了在對(duì)閃存存儲(chǔ)設(shè)備數(shù)據(jù)寫入的過程中,閃存存儲(chǔ)設(shè)備的某些存儲(chǔ)單元在放電過程易受到干擾、放電不徹底或者不能較精確的控制每個(gè)存儲(chǔ)單元的充放電電壓的情況下,所導(dǎo)致的待寫入數(shù)據(jù)不能正確、穩(wěn)定的寫入閃存存儲(chǔ)設(shè)備的問題。
【專利附圖】

【附圖說明】
[0017]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是現(xiàn)有技術(shù)提供的數(shù)據(jù)寫操作的示例圖;
[0019]圖2是本發(fā)明實(shí)施例一提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理方法的實(shí)現(xiàn)流程圖;
[0020]圖3是本發(fā)明實(shí)施例二提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理方法的實(shí)現(xiàn)流程圖; [0021]圖4是本發(fā)明實(shí)施例三提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu)圖圖5是本發(fā)明實(shí)施例四提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0022]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0023]為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。
[0024]實(shí)施例一:
[0025]圖2示出了本發(fā)明實(shí)施例一提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理方法的實(shí)現(xiàn)流程,該方法過程詳述如下:
[0026]在步驟S201中,接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址。
[0027]在本實(shí)施例中,所述寫指令包括但不限于以下信息:待寫入的數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入閃存存儲(chǔ)設(shè)備的目標(biāo)地址。所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址,為了便于理解,假設(shè)所述目標(biāo)地址指向所述閃存存儲(chǔ)設(shè)備某一存儲(chǔ)塊(block)中的的PO頁(yè)(為了便于理解,按順序用P0,P1,P2…P (η-Ι),Ρ (η)來標(biāo)示該存儲(chǔ)塊中包含的所有頁(yè)),如圖1所示,假設(shè)所述待寫入數(shù)據(jù)的數(shù)據(jù)內(nèi)容為“0123456789”,將“0123456789”寫入所述PO頁(yè),得到實(shí)際寫入數(shù)據(jù)。所述主機(jī)系統(tǒng)為可存儲(chǔ)數(shù)據(jù)的任意系統(tǒng),例如電腦系統(tǒng)、數(shù)碼相機(jī)、攝影機(jī)、通信裝置、音訊播放器、視訊播發(fā)器等系統(tǒng)。
[0028]在步驟S202中,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲(chǔ)設(shè)備的所述目標(biāo)地址中;
[0029]在步驟S203中,判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致,若判斷結(jié)果為“是”,則結(jié)束操作;若判斷結(jié)果為“否”,則執(zhí)行步驟S204。
[0030]在本實(shí)施例中,可以直接通過匹配的方式判斷寫入所述目標(biāo)地址的數(shù)據(jù)(即所述實(shí)際寫入數(shù)據(jù))是否與所述待寫入數(shù)據(jù)一致,也可以通過錯(cuò)誤檢查和糾正(Error Checkingand Correction, ECC)校驗(yàn)寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致。
[0031]在步驟S204中,通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),并重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,即返回執(zhí)行步驟S202。
[0032]具體的可以是,通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),判斷所述目標(biāo)地址指向的頁(yè)的寫入次數(shù)是否超出預(yù)設(shè)的閾值,如果未超出預(yù)設(shè)的閾值,并重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,即返回執(zhí)行步驟S202 ;如果超出預(yù)設(shè)的閾值,將所述目標(biāo)地址指向的該頁(yè)標(biāo)記為無效頁(yè),并重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址連續(xù)的后續(xù)地址中。
[0033]進(jìn)一步的,通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址包括:
[0034]讀取寫入所述目標(biāo)地址的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn);
[0035]當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,返回步驟S202執(zhí)行;當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)未超過ECC閾值時(shí),對(duì)讀取的所述數(shù)據(jù)進(jìn)行糾正,并在糾正成功后結(jié)束操作。
[0036]其中,所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
[0037]在本實(shí)施例中,如果寫入所述目標(biāo)地址的數(shù)據(jù)與所述待寫入數(shù)據(jù)不一致且寫入所述目標(biāo)地址的數(shù)據(jù)無法通過ECC糾正,則重新返回步驟S202執(zhí)行,直至寫入所述目標(biāo)地址的數(shù)據(jù)與所述待寫入數(shù)據(jù)完全一致。
[0038]本發(fā)明實(shí)施例對(duì)所述待寫入數(shù)據(jù)以同樣的方式進(jìn)行再次的編程,即以SLC寫入方式對(duì)目標(biāo)地址所在頁(yè)(如PO頁(yè))中包含的每個(gè)存儲(chǔ)單元的充放電電壓進(jìn)行重新控制,使得出錯(cuò)的存儲(chǔ)單元重新進(jìn)行電壓調(diào)整以便能正確的存儲(chǔ)所述待寫入數(shù)據(jù),從而有效的降低存儲(chǔ)單元存儲(chǔ)數(shù)據(jù)的錯(cuò)誤率,提高數(shù)據(jù)存儲(chǔ)的穩(wěn)定性。
[0039]實(shí)施例二:
[0040]圖3示出了本發(fā)明實(shí)施例二提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理方法的實(shí)現(xiàn)流程,實(shí)施例二的所述閃存存儲(chǔ)設(shè)備至少包括一多層單元閃存,該方法過程詳述如下:
[0041 ] 在步驟S301中,接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;
[0042]在步驟S302中,將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲(chǔ)設(shè)備的所述目標(biāo)地址中;
[0043]在步驟S303中,判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致,若判斷結(jié)果為“是”,則結(jié)束操作;若判斷結(jié)果為“否”,則執(zhí)行步驟S304。
[0044]在步驟S304中,通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,即返回執(zhí)行步驟S302。
[0045]本實(shí)施例步驟S301至步驟S304的具體實(shí)施過程如實(shí)施例二步驟S201至步驟S204所述,在此不再贅述。
[0046]在步驟S305中,在系統(tǒng)空閑時(shí)或者在閃存存儲(chǔ)設(shè)備的使用容量達(dá)到預(yù)設(shè)的閾值時(shí),選取空塊作為交換塊,并將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中。
[0047]由于本發(fā)明實(shí)施例主要解決的是MLC型閃存存儲(chǔ)設(shè)備在以MLC方式進(jìn)行數(shù)據(jù)寫入時(shí)容易出現(xiàn)數(shù)據(jù)錯(cuò)誤、穩(wěn)定性差的問題。因此本實(shí)施例利用SLC寫入方式的優(yōu)勢(shì),先將所述待寫入數(shù)據(jù)以SLC方式寫入到所述閃存存儲(chǔ)設(shè)備的目標(biāo)地址,然后再將寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到選定的交換塊中。其中,所述交換塊為沒有寫入數(shù)據(jù)的空塊。
[0048]另外,本發(fā)明實(shí)施例還可以充分利用所述MLC型閃存存儲(chǔ)設(shè)備的存儲(chǔ)空間,由于在對(duì)MLC型閃存設(shè)備進(jìn)行以SLC方式寫入數(shù)據(jù)時(shí)只對(duì)其中一些具有寫入速度快且穩(wěn)定可靠的頁(yè)進(jìn)行數(shù)據(jù)寫入,即所述目標(biāo)地址為一些具有寫入速度快且穩(wěn)定可靠的頁(yè),當(dāng)系統(tǒng)空閑的時(shí)候或者閃存存儲(chǔ)設(shè)備的使用容量達(dá)到預(yù)設(shè)的閾值時(shí),將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中,可以使MLC型閃存存儲(chǔ)設(shè)備的所有頁(yè)都可以用來存放數(shù)據(jù),這樣便避免了 MLC閃存存儲(chǔ)設(shè)備存儲(chǔ)空間的浪費(fèi)。
[0049]在步驟S306中,判斷寫入所述交換塊中的數(shù)據(jù)是否與所述以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)一致;若判斷結(jié)果為“是”,則結(jié)束操作;若判斷結(jié)果為“否”,則執(zhí)行步驟S307 ;
[0050]在本實(shí)施例中,可以直接通過匹配的方式判斷寫入所述交換塊中的數(shù)據(jù)是否與寫入所述目標(biāo)地址的數(shù)據(jù)一致,也可以通過錯(cuò)誤檢查和糾正(Error Checking andCorrection, ECC)校驗(yàn)寫入所述交換塊中的數(shù)據(jù)是否與寫入所述目標(biāo)地址的數(shù)據(jù)一致。
[0051]在步驟S307中,通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),擦除所述交換塊,重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中;或者,通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),選取空塊作為所述交換塊的替換塊,并將所述交換塊標(biāo)記為無效塊,重新以MLC方式將搬移到所述交換塊中的數(shù)據(jù)寫入所述替換塊。
[0052]具體的可以是,通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),判斷所述交換塊的寫入次數(shù)是否超出預(yù)設(shè)的閾值,如果未超出預(yù)設(shè)的閾值,擦除該交換塊,并重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中,即返回執(zhí)行步驟S305 ;如果超出預(yù)設(shè)的閾值,將所述交換塊標(biāo)記為無效塊,并重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到離所述交換塊物理距離最近的空塊中。其中,所述空塊為沒有寫入數(shù)據(jù)的塊,所述無效塊可以作為壞塊不再使用,也可作為備用塊后續(xù)再次使用。
[0053]進(jìn)一步的,所述通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正包括:
[0054]讀取寫入所述交換塊中的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn);
[0055]當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功;
[0056]其中,所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。在本實(shí)施例中,每份存儲(chǔ)的數(shù)據(jù)都包含一個(gè)ECC碼,為了檢測(cè)輸出數(shù)據(jù)是否存在錯(cuò)誤,系統(tǒng)在數(shù)據(jù)讀取時(shí),先生成正確的ECC碼,并將該ECC碼與讀取的數(shù)據(jù)的ECC碼進(jìn)行比較驗(yàn)證,如果比較結(jié)果相同,則說明讀取的數(shù)據(jù)正確。如果比較結(jié)果不相同,則說明讀取的數(shù)據(jù)存在錯(cuò)誤。
[0057]作為本發(fā)明的另一示例,本實(shí)施例還可以包括:在系統(tǒng)生成的ECC碼與讀取數(shù)據(jù)的ECC碼比較結(jié)果不相同時(shí),對(duì)該讀取數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的大小進(jìn)行檢測(cè),在所述錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)等于或者小于預(yù)設(shè)的閾值時(shí)(例如:1比特),通過ECC碼對(duì)所述錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,在所述錯(cuò)誤數(shù)據(jù)糾正不成功時(shí),再對(duì)存儲(chǔ)所述數(shù)據(jù)的目標(biāo)地址塊進(jìn)行檢測(cè);在所述錯(cuò)誤數(shù)據(jù)大于預(yù)設(shè)的閾值時(shí),直接進(jìn)行壞塊檢測(cè)。
[0058]另外,為了更好的區(qū)分所述存儲(chǔ)塊,本實(shí)施例還包括對(duì)所述存儲(chǔ)塊的狀態(tài)進(jìn)行標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)包括“忙”、“空閑”、“壞塊”等。
[0059]本發(fā)明實(shí)施例為解決MLC型閃存存儲(chǔ)設(shè)備在以MLC方式進(jìn)行數(shù)據(jù)寫入時(shí)容易出現(xiàn)數(shù)據(jù)錯(cuò)誤、穩(wěn)定性較差的問題,將SLC數(shù)據(jù)寫入的方式運(yùn)用到MLC型閃存存儲(chǔ)設(shè)備中,即在MLC型閃存存儲(chǔ)設(shè)備接收到寫指令時(shí),先將寫指令中的待寫入數(shù)據(jù)以SLC方式寫入目標(biāo)地址,然后再以MLC方式將所述目標(biāo)地址中的數(shù)據(jù)搬移到選定的交換塊中,并經(jīng)過多次ECC校驗(yàn),直至寫入的數(shù)據(jù)完全正確,從而保證MLC型閃存存儲(chǔ)設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)的準(zhǔn)確性和穩(wěn)定性,有效提升閃存存儲(chǔ)設(shè)備的整體性能。
[0060]實(shí)施例三:
[0061]圖4示出了本發(fā)明實(shí)施例三提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。
[0062]該閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置可以應(yīng)用于閃存存儲(chǔ)設(shè)備中,可以是運(yùn)行于閃存存儲(chǔ)設(shè)備內(nèi)的軟件單元、硬件單元或者軟硬件相結(jié)合的單元,也可以作為獨(dú)立的掛件集成到閃存存儲(chǔ)設(shè)備中或者運(yùn)行于閃存存儲(chǔ)設(shè)備的應(yīng)用系統(tǒng)中。
[0063]該閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置包括指令接收單元41、寫入單元42、第一判斷單元43以及第一處理單元44。其中,各單元的具體功能如下:
[0064]指令接收單元41,用于接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;
[0065]寫入單元42,用于以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址;
[0066]第一判斷單元43,用于判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致;
[0067]第一處理單元44,用于在所述第一判斷單元43判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
[0068]進(jìn)一步的,所述第一處理單元44包括:
[0069]第一讀取模塊441,用于讀取寫入所述目標(biāo)地址的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn);
[0070]第一處理模塊442,用于當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,其中所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
[0071]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元或模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實(shí)施例中的各功能單元、模塊可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中,上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請(qǐng)的保護(hù)范圍。上述裝置中單元、模塊的具體工作過程,可以參考前述方法實(shí)施例一中的對(duì)應(yīng)過程,在此不再贅述。
[0072]實(shí)施例四:
[0073]圖5示出了本發(fā)明實(shí)施例四提供的閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置的組成結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。
[0074]該閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置可以應(yīng)用于閃存存儲(chǔ)設(shè)備中,可以是運(yùn)行于閃存存儲(chǔ)設(shè)備內(nèi)的軟件單元、硬件單元或者軟硬件相結(jié)合的單元,也可以作為獨(dú)立的掛件集成到閃存存儲(chǔ)設(shè)備中或者運(yùn)行于閃存存儲(chǔ)設(shè)備的應(yīng)用系統(tǒng)中。
[0075]該閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理裝置包括指令接收單元51、寫入單元52、第一判斷單元53以及第一處理單元54。其中,各單元的具體功能如下:
[0076]指令接收單元51,用于接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;
[0077]寫入單元52,用于以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址;
[0078]第一判斷單元53,用于判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致;
[0079]第一處理單元54,用于在所述判斷單元53判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
[0080]進(jìn)一步的,所述第一處理單元54包括:
[0081]第一讀取模塊541,用于讀取寫入所述目標(biāo)地址的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn);
[0082]第一處理模塊542,用于當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,其中所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
[0083]進(jìn)一步的,所述閃存存儲(chǔ)設(shè)備至少包括一多層單元閃存,所述裝置包括:
[0084]搬移單元55,用于在系統(tǒng)空閑時(shí)或者在閃存存儲(chǔ)設(shè)備的使用容量達(dá)到預(yù)設(shè)的閾值時(shí),選取空塊作為交換塊,并將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中。
[0085]進(jìn)一步的,所述裝置包括:
[0086]第二判斷單元56,用于判斷寫入所述交換塊中的數(shù)據(jù)是否與所述以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)一致;
[0087]第二處理單元57,用于在所述第二判斷單元56判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),擦除所述交換塊,重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中;或者,在所述第二判斷單元判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),選取空塊作為所述交換塊的替換塊,并將所述交換塊標(biāo)記為無效塊,重新以MLC方式將搬移到所述交換塊中的數(shù)據(jù)寫入所述替換塊。
[0088]進(jìn)一步的,所述第二處理單元57包括:
[0089]第二讀取模塊571,用于讀取寫入所述交換塊中的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn);
[0090]第二處理模塊572,用于當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,其中所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
[0091]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元或模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實(shí)施例中的各功能單元、模塊可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中,上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請(qǐng)的保護(hù)范圍。上述裝置中單元、模塊的具體工作過程,可以參考前述方法實(shí)施例一中的對(duì)應(yīng)過程,在此不再贅述。
[0092]綜上所述,本發(fā)明實(shí)施例的閃存存儲(chǔ)設(shè)備在接收到寫指令后,以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,并判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致,若不一致,則通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,直到寫入所述目標(biāo)地址的數(shù)據(jù)與所述待寫入數(shù)據(jù)完全一致。通過本發(fā)明實(shí)施例有效的解決了在對(duì)閃存存儲(chǔ)設(shè)備數(shù)據(jù)寫入的過程中,閃存存儲(chǔ)設(shè)備的某些存儲(chǔ)單元在放電過程易受到干擾、放電不徹底或者不能較精確的控制每個(gè)存儲(chǔ)單元的充放電電壓的情況下,所導(dǎo)致的待寫入數(shù)據(jù)不能正確、穩(wěn)定的寫入閃存存儲(chǔ)設(shè)備的問題。另外,對(duì)于MLC閃存存儲(chǔ)設(shè)備,本發(fā)明實(shí)施例充分利用了 SLC寫入方式的優(yōu)勢(shì),先將寫指令中的待寫入數(shù)據(jù)以SLC方式寫入目標(biāo)地址,然后再以MLC方式將所述目標(biāo)地址中的數(shù)據(jù)搬移到選定的交換塊中,并經(jīng)過多次ECC校驗(yàn),保證寫入的數(shù)據(jù)完全正確,從而保證MLC型閃存存儲(chǔ)設(shè)備在數(shù)據(jù)寫操作過程中數(shù)據(jù)的準(zhǔn)確性和穩(wěn)定性,有效提升閃存存儲(chǔ)設(shè)備的整體性能,具有較強(qiáng)的易用性和實(shí)用性。
[0093]本領(lǐng)域普通技術(shù)人員還可以理解,實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以在存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),包括R0M/RAM、磁盤、光盤等。
[0094]以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下做出若干等同替代或明顯變型,而且性能或用途相同,都應(yīng)當(dāng)視為屬于本發(fā)明由所提交的權(quán)利要求書確定的專利保護(hù)范圍。
【權(quán)利要求】
1.一種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的方法,其特征在于,所述方法包括: 接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址; 以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址; 判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致; 若不一致,則通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
2.如權(quán)利要求1所述的方法,其特征在于,所述通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址包括: 讀取寫入所述目標(biāo)地址的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn); 當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址; 其中,所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
3.如權(quán)利要求1或2 所述的方法,其特征在于,所述閃存存儲(chǔ)設(shè)備至少包括一多層單元閃存,所述方法包括: 在系統(tǒng)空閑時(shí)或者在閃存存儲(chǔ)設(shè)備的使用容量達(dá)到預(yù)設(shè)的閾值時(shí),選取空塊作為交換塊,并將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中。
4.如權(quán)利要求3所述的方法,其特征在于,所述方法包括: 判斷寫入所述交換塊中的數(shù)據(jù)是否與所述以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)一致;若不一致,則通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),擦除所述交換塊,重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中。
5.如權(quán)利要求3所述的方法,其特征在于,所述方法包括: 判斷寫入所述交換塊中的數(shù)據(jù)是否與所述以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)一致;若不一致,則通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),選取空塊作為所述交換塊的替換塊,并將所述交換塊標(biāo)記為無效塊,重新以MLC方式將搬移到所述交換塊中的數(shù)據(jù)寫入所述替換塊。
6.如權(quán)利要求4或5所述的方法,其特征在于,所述通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正包括: 讀取寫入所述交換塊中的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn); 當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功; 其中,所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
7.—種閃存存儲(chǔ)設(shè)備中數(shù)據(jù)管理的裝置,其特征在于,所述裝置包括: 指令接收單元,用于接收主機(jī)系統(tǒng)發(fā)送的寫指令,所述寫指令包含有待寫入數(shù)據(jù)以及所述待寫入數(shù)據(jù)寫入的目標(biāo)地址,所述目標(biāo)地址為所述閃存存儲(chǔ)設(shè)備中某一頁(yè)的地址;寫入單元,用于以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址; 第一判斷單元,用于判斷寫入所述目標(biāo)地址的數(shù)據(jù)是否與所述待寫入數(shù)據(jù)一致; 第一處理單元,用于在所述第一判斷單元判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述目標(biāo)地址的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一處理單元包括: 第一讀取模塊,用于讀取寫入所述目標(biāo)地址的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn); 第一處理模塊,用于當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,重新以SLC方式將所述待寫入數(shù)據(jù)寫入所述目標(biāo)地址,其中所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
9.如權(quán)利要求7或8所述的裝置,其特征在于,所述閃存存儲(chǔ)設(shè)備至少包括一多層單元閃存,所述裝置包括: 搬移單元,用于在系統(tǒng)空閑時(shí)或者在閃存存儲(chǔ)設(shè)備的使用容量達(dá)到預(yù)設(shè)的閾值時(shí),選取空塊作為交換塊,并將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置包括: 第二判斷單元,用于判斷寫入所述交換塊中的數(shù)據(jù)是否與所述以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)一致; 第二處理單元,用于在所述第二判斷單元判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),擦除所述交換塊,重新將以SLC方式寫入所述目標(biāo)地址的數(shù)據(jù)以MLC方式搬移到所述交換塊中;或者,在所述第二判斷單元判斷結(jié)果為否時(shí),通過ECC碼對(duì)寫入所述交換塊中的錯(cuò)誤數(shù)據(jù)進(jìn)行糾正,并在糾正不成功時(shí),選取空塊作為所述交換塊的替換塊,并將所述交換塊標(biāo)記為無效塊,重新以MLC方式將搬移到所述交換塊中的數(shù)據(jù)寫入所述替換塊。
11.如權(quán)利要求10所述的裝置,其特征在于,所述第二處理單元包括: 第二讀取模塊,用于讀取寫入所述交換塊中的數(shù)據(jù),并對(duì)讀取的所述數(shù)據(jù)進(jìn)行ECC校驗(yàn); 第二處理模塊,用于當(dāng)讀取的所述數(shù)據(jù)中錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)超過了 ECC閾值時(shí),判定為糾正不成功,其中所述ECC閾值為ECC碼能檢測(cè)并糾正的最大字節(jié)數(shù)。
【文檔編號(hào)】G06F12/02GK103955431SQ201410143753
【公開日】2014年7月30日 申請(qǐng)日期:2014年4月11日 優(yōu)先權(quán)日:2014年4月11日
【發(fā)明者】梁小慶 申請(qǐng)人:深圳市江波龍電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
兴山县| 沽源县| 辰溪县| 波密县| 锦屏县| 淮阳县| 来凤县| 乌拉特后旗| 宽甸| 大厂| 调兵山市| 白水县| 石柱| 长白| 读书| 界首市| 白银市| 嘉兴市| 枞阳县| 将乐县| 广元市| 宜阳县| 手游| 邮箱| 麟游县| 惠来县| 建昌县| 新野县| 城口县| 澜沧| 湛江市| 三亚市| 洱源县| 湟中县| 马尔康县| 香格里拉县| 彭阳县| 中江县| 浙江省| 宣城市| 沙河市|