本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種閃存設(shè)備的訪問方法、裝置和系統(tǒng)。
背景技術(shù):
閃存設(shè)備是一種長壽命的非易失性存儲陣列,即使斷電其所存儲的數(shù)據(jù)也不會丟失。由于閃存設(shè)備的非易失存儲特性和高速讀寫性能,近年來被廣泛應(yīng)用。
在實際應(yīng)用中,閃存設(shè)備的最小存儲單位為存儲元,而數(shù)據(jù)在存儲元中是以電子的形式存儲的,且不同的數(shù)據(jù),在存儲元中表現(xiàn)為不同的閾值電壓Vth;比如,在單階存儲元(SLC,Single-level cell)類型的存儲陣列中,每個存儲元存儲一比特的數(shù)據(jù),所存儲的數(shù)據(jù)為0或1;其中,如圖1所示,在存儲元存儲數(shù)據(jù)1時,其Vth的概率分布如圖1中的左邊圖形所示,而在存儲元存儲數(shù)據(jù)0時,其Vth的概率分布如圖1中的右邊圖形所示。在現(xiàn)有技術(shù)中,閃存設(shè)備的控制器通常采用下述方式,讀取存儲元中的存儲數(shù)據(jù):首先獲取該存儲元的閾值電壓Vth,然后將預(yù)設(shè)的判決電壓Vread與該存儲元的閾值電壓Vth作比較;在判決電壓Vread大于存儲單元的閾值電壓Vth時,確定該存儲元存儲的數(shù)據(jù)為“1”;在判決電壓Vread小于該存儲元的閾值電壓Vth時,確定該存儲單元存儲的數(shù)據(jù)為“0”。
但是,在實際應(yīng)用中,由于存儲元中的電子會隨著時間的推移而泄漏,而在電子泄露后存儲元的閾值電壓也會向低電壓方向偏移,如此,采用上述方法,對于存儲數(shù)據(jù)0的存儲元,當其閾值電壓Vth偏移到低于預(yù)設(shè)的判決電壓Vread時,將會造成該存儲元存儲數(shù)據(jù)的誤判;比如,仍參照圖1,一存儲元所存儲的數(shù)據(jù)為0,其初始Vth為5V,而經(jīng)過一段時間后,由于該存儲元的電子泄露,其閾值電壓Vth變?yōu)?V,而預(yù)設(shè)的判決電壓Vread為3V,那么此時,如果采用上述方法,由于此時判決電壓Vread(3V)大于閾值電壓Vth(2V),閃存設(shè)備的控制器將會將該存儲元所存儲的數(shù)據(jù)誤判為1。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種閃存設(shè)備的訪問方法、裝置和系統(tǒng),以減少對閃存設(shè)備存儲數(shù)據(jù)的誤判。
第一方面,本發(fā)明提供一種閃存設(shè)備的訪問方法,該閃存設(shè)備包括控制器和存儲陣列,該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,該方法包括:控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),根據(jù)讀取的特定數(shù)據(jù),確定判決電壓,以及利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
在本發(fā)明實施例中,預(yù)先將存儲陣列分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,所述控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的所述用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的存儲數(shù)據(jù)的誤判。
結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),包括:控制器獲取特定存儲單元的當前閾值電壓、比較預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù)。在本發(fā)明實施例中,可獲取特定存儲單元中所存儲的特定數(shù)據(jù)。
結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,控制器根據(jù)讀取的特定數(shù)據(jù),確定判決電壓,包括:控制器計算確定的特定數(shù)據(jù)的誤碼率,在誤碼率小于預(yù)設(shè)閾值時,將預(yù)設(shè)判決電壓作為確定的判決電壓。
在本發(fā)明實施例中,可獲取誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù),然后,利用誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread,在用戶存儲單元中讀取用戶數(shù)據(jù),可使得所讀取的用戶數(shù)據(jù)的誤碼率也小于預(yù)設(shè)閾值,從而減少對存儲數(shù)據(jù)的誤判。
結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,預(yù)設(shè)判決電壓有至少兩個;控制器比較預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù),包括:控制器比較每個預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù);控制器根據(jù)讀取的特定數(shù)據(jù),確定判決電壓,包括:控制器計算根據(jù)每個預(yù)設(shè)判決確定的特定數(shù)據(jù)的誤碼率,選擇誤碼率最小的確定的特定數(shù)據(jù)對應(yīng)的預(yù)設(shè)判決電壓作為確定的判決電壓。
在本發(fā)明實施例中,利用誤碼率最小的特定數(shù)據(jù)所對應(yīng)的判決電壓,在用戶存儲單元中讀取用戶數(shù)據(jù),可使所讀取的用戶數(shù)據(jù)的誤碼率也最小,從而減少對存儲數(shù)據(jù)的誤判。
結(jié)合第一方面的第二種可能的實現(xiàn)方式或第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,控制器計算確定的特定數(shù)據(jù)的誤碼率包括:控制器比較確定的特定數(shù)據(jù)和記錄的原始特定數(shù)據(jù),獲得確定的特定數(shù)據(jù)的誤碼率。在本發(fā)明實施例中,可確定特定數(shù)據(jù)的誤碼率。
結(jié)合第一方面、第一方面的第一種可能的實現(xiàn)方式、第一方面的第二種可能的實現(xiàn)方式、第一方面的第三種可能的實現(xiàn)方式或第一方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,上述方法還包括:控制器根據(jù)用戶存儲單元的磨損特性對特定存儲單元進行磨損操作,以使特定存儲單元和用戶存儲單元的磨損特性相一致。在本發(fā)明實施例中,可使特定存儲單元和用戶存儲單元的磨損特性相一致。
結(jié)合第一方面、第一方面的第一種可能的實現(xiàn)方式、第一方面的第二種可能的實現(xiàn)方式、第一方面的第三種可能的實現(xiàn)方式或第一方面的第四種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,上述方法還包括:控制器在將用戶數(shù)據(jù)寫入至用戶存儲單元時,同步將特定數(shù)據(jù)重新寫入至特定存儲單元,以使得特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。在本發(fā)明實施例中,可使特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。
第二方面,本發(fā)明提供一種閃存設(shè)備的訪問方法,該閃存設(shè)備包括控制器和存儲陣列,該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,該方法包括:控制器獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓,以及利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù),其中,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓。
由上可見,在本發(fā)明實施例中,采用上述方法,可根據(jù)存儲單元閾值電壓Vth的實時偏移情況,確定判決電壓Vread,從而可減少對存儲單元存儲數(shù)據(jù)的誤判。
第三方面,本發(fā)明提供一種閃存設(shè)備的訪問裝置,閃存設(shè)備至少包括存儲陣列,該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,該裝置包括:讀取單元和確定單元,其中,讀取單元,用于讀取特定存儲單元中存儲的特定數(shù)據(jù)以及利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù),確定單元,用于根據(jù)讀取的特定數(shù)據(jù),確定判決電壓。采用本發(fā)明的裝置,可減少對存儲單元存儲數(shù)據(jù)的誤判。
結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,讀取單元在讀取特定存儲單元中存儲的特定數(shù)據(jù)時,具體用于:獲取特定存儲單元的當前閾值電壓、比較預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù)。在本發(fā)明實施例中,可在存儲單元中確定特定數(shù)據(jù)。
結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,確定單元,具體用于:計算確定的特定數(shù)據(jù)的誤碼率,且在誤碼率小于預(yù)設(shè)閾值時,將預(yù)設(shè)判決電壓作為確定的判決電壓。
在本發(fā)明實施例中,可獲取誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù),然后,利用誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread,在用戶存儲單元中讀取用戶數(shù)據(jù),從而使所讀取的用戶數(shù)據(jù)的誤碼率也小于預(yù)設(shè)閾值,進而減少對存儲數(shù)據(jù)的誤判。
結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,預(yù)設(shè)判決電壓有至少兩個,讀取單元在讀取特定存儲單元中存儲的特定數(shù)據(jù)時,具體用于:比較每個預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù);確定單元,具體用于:計算根據(jù)每個預(yù)設(shè)判決確定的特定數(shù)據(jù)的誤碼率、選擇誤碼率最小的確定的特定數(shù)據(jù)對應(yīng)的預(yù)設(shè)判決電壓作為確定的判決電壓。
在本發(fā)明實施例中,利用誤碼率最小的特定數(shù)據(jù)所對應(yīng)的判決電壓,在用戶存儲單元中讀取用戶數(shù)據(jù),可使所讀取的用戶數(shù)據(jù)的誤碼率也最小,從而減少對存儲數(shù)據(jù)的誤判。
結(jié)合第三方面的第二種可能的實現(xiàn)方式或第三方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,確定單元在計算確定的特定數(shù)據(jù)的誤碼率時,具體用于:比較確定的特定數(shù)據(jù)和記錄的原始特定數(shù)據(jù),獲得確定的特定數(shù)據(jù)的誤碼率。在本發(fā)明實施例中,可確定特定數(shù)據(jù)的誤碼率。
結(jié)合第三方面、第三方面的第一種可能的實現(xiàn)方式、第三方面的第二種可能的實現(xiàn)方式、第三方面的第三種可能的實現(xiàn)方式或第三方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,該裝置還包括:磨損單元,用于根據(jù)用戶存儲單元的磨損特性對特定存儲單元進行磨損操作,以使特定存儲單元和用戶存儲單元的磨損特性相一致。在本發(fā)明實施例中,可使得特定存儲單元和用戶存儲單元的磨損特性相一致。
結(jié)合第三方面、第三方面的第一種可能的實現(xiàn)方式、第三方面的第二種可能的實現(xiàn)方式、第三方面的第三種可能的實現(xiàn)方式或第三方面的第四種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,該裝置還包括:重寫入單元,用于在將用戶數(shù)據(jù)寫入至用戶存儲單元時,同步將特定數(shù)據(jù)重新寫入至特定存儲單元,以使得特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。在本發(fā)明實施例中,可使得特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。
第四方面,本發(fā)明提供一種閃存設(shè)備的訪問裝置,該閃存設(shè)備包括存儲陣列,該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,該裝置包括:獲取單元、判決電壓確定單元和用戶數(shù)據(jù)讀取單元,其中,獲取單元,用于獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓;判決電壓確定單元,用于根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓;用戶數(shù)據(jù)讀取單元,用于利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,采用上述方法,可根據(jù)存儲單元閾值電壓Vth的實時偏移情況,確定判決電壓Vread,從而減少對存儲單元存儲數(shù)據(jù)的誤判。
第五方面,本發(fā)明提供一種閃存設(shè)備的訪問系統(tǒng),該系統(tǒng)包括第三方面提供的閃存設(shè)備的訪問裝置和存儲陣列;該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓;該閃存設(shè)備的訪問裝置具體用于:讀取特定存儲單元中存儲的特定數(shù)據(jù),根據(jù)讀取的特定數(shù)據(jù),確定判決電壓以及利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);
或,該系統(tǒng)包括第四方面提供的閃存設(shè)備的訪問裝置和存儲陣列;該存儲陣列包括特定存儲單元和用戶存儲單元,其中,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓;閃存設(shè)備的訪問裝置具體用于:獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,其中,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓,根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓,以及利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。采用本發(fā)明的系統(tǒng),可減少對存儲數(shù)據(jù)的誤判。
第六方面,本發(fā)明提供一種可讀介質(zhì),包括執(zhí)行指令,當存儲控制器的處理器執(zhí)行執(zhí)行指令時,存儲控制器執(zhí)行第一方面提供的方法或第二方面提供的方法。采用本發(fā)明的可讀介質(zhì),可減少對存儲數(shù)據(jù)的誤判。
第七方面,提供一種存儲控制器,該存儲控制器包括:處理器、存儲器和總線;其中,存儲器用于存儲執(zhí)行指令,處理器與存儲器通過總線連接,當存儲控制器運行時,處理器執(zhí)行存儲器存儲的執(zhí)行指令,以使存儲控制器執(zhí)行第一方面提供的方法或第二方面提供的方法。采用本發(fā)明的存儲控制器,可減少對存儲數(shù)據(jù)的誤判。
由上可見,在本發(fā)明實施例中,預(yù)先將存儲陣列分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的對閃存設(shè)備存儲數(shù)據(jù)的誤判。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的閃存設(shè)備閾值電壓的概率分布示意圖;
圖2為本發(fā)明實施例提供的閃存設(shè)備的訪問方法的一流程示意圖;
圖3為本發(fā)明實施例提供的SSD的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的判決電壓的調(diào)整示意圖;
圖5為本發(fā)明實施例提供的確定判決電壓的示意圖;
圖6為本發(fā)明實施例提供的閃存設(shè)備的訪問方法的另一流程示意圖;
圖7為本發(fā)明實施例提供的閃存設(shè)備的訪問方法的又一流程示意圖;
圖8為本發(fā)明實施例提供的閃存設(shè)備的訪問方法的另一流程示意圖;
圖9為本發(fā)明實施例提供的閃存設(shè)備的訪問方法的又一流程示意圖;
圖10為本發(fā)明實施例提供的閃存設(shè)備的訪問裝置的一結(jié)構(gòu)示意圖;
圖11為本發(fā)明實施例提供的閃存設(shè)備的訪問系統(tǒng)的一結(jié)構(gòu)示意圖;
圖12為本發(fā)明實施例提供的閃存設(shè)備的一結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,并不是全部的實施例。
本發(fā)明首先提供一種閃存設(shè)備的訪問方法,該方法的應(yīng)用場景如下:
目前,閃存設(shè)備主要由兩部分構(gòu)成,分別為控制器和存儲陣列,且存儲陣列的最小存儲單位為存儲元;通常,采用下述方法,讀取存儲元中存儲的數(shù)據(jù):首先獲取存儲元的閾值電壓Vth,然后將預(yù)設(shè)的判決電壓Vread與存儲元的閾值電壓Vth作比較;以單階存儲元(SLC,Single-level cell)進行舉例說明,SLC是指只記錄一位二進制比特位“0”或“1”的存儲元,如果判決電壓Vread大于存儲元的閾值電壓Vth,確定該存儲元所存儲的數(shù)據(jù)為“1”;如果判決電壓Vread小于存儲元的閾值電壓Vth,確定存儲元所存儲的數(shù)據(jù)為“0”。
由于在實際應(yīng)用中,數(shù)據(jù)在存儲元中是以電子的形式存在的,而隨著時間的推移,存儲元中的電子會泄露,閾值電壓Vth會向低電壓方向偏移,而在現(xiàn)有技術(shù)中,存儲陣列以預(yù)設(shè)的判決電壓Vread讀取存儲數(shù)據(jù),將會導(dǎo)致存儲元存儲數(shù)據(jù)的誤判。比如,一存儲元所存儲的數(shù)據(jù)為“0”,其初始閾值電壓Vth為5V,而經(jīng)過一段時間后,由于該存儲單元的電子泄露,其閾值電壓Vth變?yōu)?V,而預(yù)設(shè)的判決電壓Vread為3V,那么此時,如果采用上述方法,由于此時判決電壓Vread(3V)大于閾值電壓Vth(2V),會將該存儲元所存儲的數(shù)據(jù)誤判為“1”。
應(yīng)理解,為了描述方便,本發(fā)明實施例僅僅以單階存儲元進行舉例說明,但本發(fā)明實施例適用多階存儲元(MLC,Multi-level cell),MLC是指可以記錄兩位或者兩位以上的二進制比特位的存儲元。
實施例一
基于上述應(yīng)用場景,本發(fā)明提供一種閃存設(shè)備的訪問方法,閃存設(shè)備可具體為U盤(USB閃存盤,USB flash disk)和SSD(Solid State Drives,固態(tài)硬盤)等設(shè)備,閃存設(shè)備可具體由控制器和存儲陣列組成,控制器的功能可具體由控制芯片實現(xiàn),存儲陣列的功能可具體由存儲芯片實現(xiàn),存儲芯片為Flash芯片,F(xiàn)lash類型的芯片可具體為Nand flash芯片;而本發(fā)明提供的閃存設(shè)備的訪問方法,如圖2所示,可具體包括以下步驟:
步驟S21:首先將存儲陣列分為特定存儲單元和用戶存儲單元;
其中,特定存儲單元具體用于存儲特定數(shù)據(jù),用戶存儲單元具體用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)具體用于確定讀取用戶數(shù)據(jù)的判決電壓Vread,在本發(fā)明實施例中,特定數(shù)據(jù)可具體為N比特位的二進制數(shù)據(jù),特定數(shù)據(jù)是計算機系統(tǒng)預(yù)知的數(shù)據(jù),例如,特定數(shù)據(jù)可以是一個預(yù)設(shè)的二進制數(shù)列,或者計算機系統(tǒng)將特定數(shù)據(jù)備份在安全性能較高的存儲設(shè)備中,其中N為大于0的正整數(shù),在以下實施例不再贅述。
在本發(fā)明實施例中,如圖3所示,閃存設(shè)備的存儲陣列可具體包括多個物理塊(Block),而每個物理塊可包括多個頁面(Page),每個頁面包括多個存儲元。在實際應(yīng)用中,SSD具體以物理塊為單位對存儲的數(shù)據(jù)進行擦除的,SSD具體以頁面為單位對存儲數(shù)據(jù)進行讀寫的。為了方便對特定存儲單元存儲的特定數(shù)據(jù)進行擦除操作,可具體在存儲陣列的中預(yù)留一部分物理塊,該物理塊中的存儲元用于存儲特定數(shù)據(jù),也即上述特定存儲單元可具體包括預(yù)留物理塊內(nèi)的一個或多個存儲元,而該存儲陣列的剩余物理塊用于存儲用戶數(shù)據(jù),也即上述用戶存儲單元可具體包括剩余物理塊內(nèi)的一個或多個存儲元。在本發(fā)明實施例中,可具體設(shè)置存儲陣列中0.5%的物理塊,用于存儲特定數(shù)據(jù),99.5%的物理塊,用于存儲用戶數(shù)據(jù);
步驟S22:使得特定存儲單元和用戶存儲單元的存儲特性相一致;
在本發(fā)明實施例中,由于決定存儲元的閾值電壓Vth偏移的主要因素為存儲元的磨損特性,也即PE(Program/Erase cycle,擦寫次數(shù)),和數(shù)據(jù)的存儲時長(Retention)特性;在本發(fā)明實施例中,可具體采用以下方式,確保特定存儲單元和用戶存儲單元的磨損特性以及存儲數(shù)據(jù)的時長特性相一致:
應(yīng)理解,因為閃存設(shè)備以物理塊為單位進行擦除操作,且不同物理的PE次數(shù)可能不相同,可以將存儲用戶數(shù)據(jù)的物理塊分為多個用戶存儲單元,每個用戶存儲單元分別有一個特定存儲單元與其相對應(yīng),即用戶存儲單元和特定存儲單元都可以分別有多個,用戶存儲單元與特定存儲單元存在對應(yīng)關(guān)系,相互對應(yīng)的用戶存儲單元和特定存儲單元的存儲特性相一致。且用戶存儲單元與特定存儲之間的對應(yīng)關(guān)系可以動態(tài)調(diào)整。為了介紹方便,除非另有說明,以下描述中的用戶存儲單元與特定存儲單元相互對應(yīng)。
控制器根據(jù)用戶存儲單元的磨損特性對特定存儲單元進行磨損操作,以使特定存儲單元和用戶存儲單元的磨損特性相一致,磨損操作包括對特定存儲單元所存儲的特定數(shù)據(jù)擦除的操作以及將特定數(shù)據(jù)重新寫入特定存儲單元的操作。
可選的,控制器可每間隔預(yù)設(shè)時長,獲取一次用戶存儲單元的擦寫次數(shù);擦寫次數(shù)可具體為用戶存儲單元被擦除存儲數(shù)據(jù)的次數(shù);用戶存儲單元可具體記錄自身的擦寫次數(shù),具體可當每次用戶存儲單元被擦除一次數(shù)據(jù)時,計數(shù)增加1;而在控制器獲取上述擦寫次數(shù)后;控制器對特定存儲單元進行同樣次數(shù)的擦寫操作;比如,控制器獲取的擦寫次數(shù)為M,控制器可具體對特定存儲單元存儲的特定數(shù)據(jù)進行M次擦除操作,然后再將特定數(shù)據(jù)寫入至特定存儲單元,其中M為大于0的正整數(shù)。
可選的,控制器還可每當檢測到用戶存儲單元被執(zhí)行擦除和寫入的操作時,對特定存儲單元執(zhí)行一次擦除和寫入的操作。具體的,控制器可每當檢測到用戶存儲單元存儲的數(shù)據(jù)被擦除,寫入新的數(shù)據(jù)時,控制器擦除特定存儲單元存儲的特定數(shù)據(jù),然后再將特定數(shù)據(jù)重新寫入至特定存儲單元。
控制器在將用戶數(shù)據(jù)寫入至用戶存儲單元時,同步將特定數(shù)據(jù)重新寫入至特定存儲單元,以使得特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。
可選的,因為在擦除操作前,閃存設(shè)備的存儲元不能進行重寫操作,控制器可具體預(yù)先為每個用戶存儲單元分配多個特定存儲單元,在每當用戶數(shù)據(jù)寫入至用戶存儲單元時,將特定數(shù)據(jù)重新寫入一新的特定存儲單元。比如,為一用戶存儲單元分配三個特定存儲單元,分別為第一存儲單元、第二存儲單元和第三存儲單元,可具體在閃存設(shè)備出廠時,在第一特定存儲單元寫入特定數(shù)據(jù),而在該用戶存儲單元寫入數(shù)據(jù)時,讀取第一特定存儲單元寫入的特定數(shù)據(jù),然后同步寫入特定數(shù)據(jù)至第二特定存儲單元,從而使得第二特定存儲單元的存儲數(shù)據(jù)的時長特性與用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。
可選的,控制器還可每當用戶數(shù)據(jù)寫入用戶存儲單元時,對特定存儲單元進行充電,從而可彌補由于存儲時長不同造成的特定存儲單元的電子泄露,從而使得兩者的初始閾值電壓Vth相一致。
步驟S23:控制器在特定存儲單元中寫入特定數(shù)據(jù);
步驟S24:每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù);
步驟S25:控制器根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread;
步驟S26:控制器利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,預(yù)先將存儲陣列分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的存儲數(shù)據(jù)的誤判。
實施例二
在本發(fā)明實施例中,上述實施例一中的步驟S24“控制器讀取特定存儲單元中存儲的特定數(shù)據(jù)”可具體為:控制器獲取特定存儲單元的當前閾值電壓Vth;控制器比較預(yù)設(shè)判決電壓Vread與特定存儲單元的當前閾值電壓Vth,確定特定存儲單元中存儲的特定數(shù)據(jù)。在本發(fā)明實施例中,特定存儲單元可以包含多個存儲元,上述獲取的閾值電壓Vth也可具體為獲取多個存儲元的閾值電壓Vth;仍如前,對于SLC類型的閃存設(shè)備,可具體在預(yù)設(shè)的判決電壓Vread大于特定存儲單元中存儲元的當前閾值電壓Vth時,確定特定存儲單元的存儲元所存儲的數(shù)據(jù)為“1”;在預(yù)設(shè)的判決電壓Vread小于特定存儲單元中存儲元的當前閾值電壓Vth時,確定特定存儲單元的存儲元所存儲的數(shù)據(jù)為“0”。
相應(yīng)的,實施例一中的步驟S25“控制器根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread”可具體包括:控制器計算在特定存儲單元中所確定的特定數(shù)據(jù)的誤碼率;若所確定特定數(shù)據(jù)的誤碼率小于預(yù)設(shè)閾值,將預(yù)設(shè)判決電壓Vread作為確定的判決電壓Vread;若所確定特定數(shù)據(jù)的誤碼率大于等于預(yù)設(shè)閾值,控制器則調(diào)整預(yù)設(shè)的判決電壓Vread,且利用調(diào)整后的判決電壓Vread重新確定特定存儲單元中的特定數(shù)據(jù),計算重新確定的特定數(shù)據(jù)的誤碼率,循環(huán)上述過程,直至所確定的特定數(shù)據(jù)的誤碼率小于預(yù)設(shè)閾值為止。
具體的,如圖6所示,確定判決電壓的過程可具體包括:
步驟S61:控制器比較在特定存儲單元中所確定的特定數(shù)據(jù)和記錄的原始特定數(shù)據(jù),獲得在特定存儲單元中所確定的特定數(shù)據(jù)的誤碼率;
可選的,控制器可在預(yù)設(shè)存儲介質(zhì)中記錄原始特定數(shù)據(jù),具體如下:控制器在寫入特定數(shù)據(jù)至特定存儲單元時,可同步將特定數(shù)據(jù)寫入預(yù)設(shè)存儲介質(zhì)內(nèi),預(yù)設(shè)存儲介質(zhì)存儲數(shù)據(jù)的可靠性要高于特定存儲單元存儲數(shù)據(jù)的可靠性;在本發(fā)明實例中,預(yù)設(shè)存儲介質(zhì)可具體位于閃存設(shè)備的內(nèi)部也可位于閃存設(shè)備的外部;當位于閃存設(shè)備的內(nèi)部時,在閃存設(shè)備的控制器上具體有用于存儲程序指令的存儲介質(zhì),該存儲介質(zhì)的可靠性要高于存儲單元存儲數(shù)據(jù)的可靠性,因此,可具體將特定數(shù)據(jù)存儲于閃存設(shè)備控制器上的存儲介質(zhì)內(nèi),該存儲介質(zhì)可具體為NOR flash類型的存儲芯片;而NOR flash類型的存儲芯片的可靠性要高于閃存設(shè)備存儲陣列通常所用的Nand flash類型的芯片。在本發(fā)明實施例中,控制器可具體在預(yù)設(shè)存儲介質(zhì)中獲取原始特定數(shù)據(jù)。
可選的,控制器還可在程序指令中記錄原始特定數(shù)據(jù),具體的:可預(yù)先在程序指令中直接記錄原始特定數(shù)據(jù),因此控制器還在直接在程序指令中獲取原始特定數(shù)據(jù)。
比如,假設(shè)所記錄的原始特定數(shù)據(jù)為00000,而經(jīng)過一段時間后,由于特定存儲單元的閾值電壓Vth偏移,控制器利用預(yù)設(shè)的判決電壓Vread,將特定存儲單元中存儲的數(shù)據(jù)誤判為00011,也即控制器從特定存儲單元中所讀取出的特定數(shù)據(jù)為00011,此時,控制器可將上述兩個特定數(shù)據(jù),00011和00000進行比較,可確定上述兩個特定數(shù)據(jù)有2個比特位不同,而特定數(shù)據(jù)共有5個比特位,因此可確定在特定存儲單元中所讀取的特定數(shù)據(jù)的誤碼率為2/5=40%。
步驟S62:控制器判斷特定數(shù)據(jù)的誤碼率是否低于預(yù)設(shè)閾值,如果是,執(zhí)行步驟S63;如果否,執(zhí)行步驟S64;
具體的,用戶可自行設(shè)置預(yù)設(shè)閾值的大小。
步驟S63:控制器將當前判決電壓Vread作為確定的判決電壓Vread;
步驟S64:控制器調(diào)整預(yù)設(shè)的判決電壓Vread,且利用調(diào)整后的判決電壓Vread在特定存儲單元中重新讀取特定數(shù)據(jù),然后返回執(zhí)行步驟S61;直至獲取誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù)為止。
關(guān)于如何利用調(diào)整后的判決電壓Vread讀取特定數(shù)據(jù)的方法,可參見上述利用預(yù)設(shè)的判決電壓Vread讀取特定數(shù)據(jù)的方式。
由上可見,在本發(fā)明實施例中,可獲取誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù),然后,利用誤碼率小于預(yù)設(shè)閾值的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread,在用戶存儲單元所讀取用戶數(shù)據(jù),可使所讀取的用戶數(shù)據(jù)的誤碼率也小于預(yù)設(shè)閾值,從而減少存儲數(shù)據(jù)的誤判。
可選的,預(yù)設(shè)判決電壓有至少兩個,上述控制器比較預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù),可具體為:控制器比較每個預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù);實施例一中的步驟S25“控制器根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread”還可具體為:控制器計算根據(jù)每個預(yù)設(shè)判決電壓Vread確定的特定數(shù)據(jù)的誤碼率;控制器選擇誤碼率最小的確定的特定數(shù)據(jù)對應(yīng)的預(yù)設(shè)判決電壓Vread作為確定的判決電壓Vread;
具體的,如圖7所示,確定判決電壓的過程可具體包括:
步驟S71:控制器獲取當前在存儲單元中所確定的特定數(shù)據(jù)的誤碼率;
關(guān)于如何計算特定數(shù)據(jù)的誤碼率,可具體參見上述記載。
步驟S72:控制器調(diào)整預(yù)設(shè)的判決電壓Vread,且利用調(diào)整后的判決電壓Vread,重新在特定存儲單元中確定特定數(shù)據(jù);
由于存儲單元的電子泄露,僅僅會導(dǎo)致存儲單元的閾值電壓Vth向低電壓方向偏移,因此,可僅將判決電壓Vread向低電壓方向調(diào)整即可;比如,可一次將存儲陣列的判決電壓Vread向低電壓方向調(diào)整一個步長,步長可具體為10mv;再如,閃存設(shè)備原始的預(yù)設(shè)判決電壓Vread為50mv,那么經(jīng)過一次調(diào)整后,判決電壓Vread可變?yōu)?0mv,且控制器再利用40mV的判決電壓Vread重新在特定存儲單元中讀取特定數(shù)據(jù),同理,對于SLC類型的閃存設(shè)備,可具體將40mv的判決電壓Vread與特定存儲單元的閾值電壓Vth進行比較,當判決電壓Vread大于當前閾值電壓Vth時,確定特定存儲單元所存儲的數(shù)據(jù)為“1”,否則,確定特定存儲單元所存儲的數(shù)據(jù)為“0”。
步驟S73:控制器判斷判決電壓Vread的調(diào)整是否達至預(yù)設(shè)值,如果達到,執(zhí)行步驟S74;如果未達到,返回執(zhí)行步驟S71;
具體的,控制器可判斷判決電壓Vread的調(diào)整的總步長是否達至預(yù)設(shè)值,預(yù)設(shè)值可具體為500mv-600mv;假設(shè),判決電壓Vread一次調(diào)節(jié)一個步長,一個步長10mv,那么采用上述方法,判決電壓Vread僅能調(diào)節(jié)50-60次。
在本發(fā)明實施例中,仍沿上述舉例,在判決電壓Vread的調(diào)節(jié)未達至預(yù)設(shè)值時,控制器將利用調(diào)節(jié)后的判決電壓Vread繼續(xù)在特定存儲單元中讀取特定數(shù)據(jù),假設(shè)所讀取的特定數(shù)據(jù)為00001,計算重新讀取特定數(shù)據(jù)的誤碼率,將最新讀取的特定數(shù)據(jù)00001和記錄的原始特定數(shù)據(jù)00000進行比較,確定兩者有一比特位不同,因此,可確定最新讀取特定數(shù)據(jù)的誤碼率=1/5=20%。
步驟S74:控制器將最小誤碼率的特定數(shù)據(jù)所對應(yīng)的判決電壓作為確定的判決電壓;
通過上述論述可知,控制器通過調(diào)節(jié)判決電壓Vread,可獲取利用不同判決電壓Vread所讀取的特定數(shù)據(jù),進而可獲取上述不同特定數(shù)據(jù)的誤碼率,在本發(fā)明實施例中,可具體從上述特定數(shù)據(jù)中,選擇誤碼率最小的特定數(shù)據(jù),且獲取誤碼率最小的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread;最后,利用最小誤碼率的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread讀取用戶存儲單元中的用戶數(shù)據(jù)。
在本發(fā)明實施例中,利用誤碼率最小的特定數(shù)據(jù)所對應(yīng)的判決電壓Vread,在用戶存儲單元所讀取用戶數(shù)據(jù),也可使所讀取的用戶數(shù)據(jù)的誤碼率最小,從而減少存儲數(shù)據(jù)的誤判。
實施例三
本發(fā)明還提供另一種閃存設(shè)備的訪問方法,該方法可具體應(yīng)用于固態(tài)硬盤SSD中,該方法具體如下:
首先預(yù)先為SSD存儲陣列中的每個物理塊均分配一BIT(Block Info Table,物理塊信息表),該表中可記錄每個物理塊的PE(擦寫)次數(shù)、存儲時長(Retention)以及讀取次數(shù)等信息;然后設(shè)置一Calibration Table(校準表),該表以PE、Retention、讀次數(shù)以及環(huán)境溫度作為索引,存儲SSD存儲陣列的判決電壓Vread的偏移值;其中,BIT以及Calibration Table可具體存儲在SSD控制器的存儲介質(zhì)中。
在本發(fā)明實施例中,為了使SSD具有一定糾錯能力,一般對寫入SSD的數(shù)據(jù)進行ECC(Error Correcting Code,錯誤檢查和糾正)編碼,因此,在控制器獲取存儲陣列讀取的數(shù)據(jù)后,還需再對數(shù)據(jù)進行ECC解碼;
具體的,在本發(fā)明實施例中,SSD控制器的功能可具體由DSP(Digital Signal Processing,數(shù)字信號處理)單元和ECC解碼單元實現(xiàn);當控制器要讀取存儲陣列的數(shù)據(jù)時,SSD控制器中的DSP單元可首先獲取環(huán)境的溫度信息,SSD內(nèi)設(shè)置有溫度傳感器,可采集SSD所處環(huán)境的溫度;然后,確定需讀取數(shù)據(jù)的物理塊,以及確定當前物理塊的BIT,從BIT中獲取該物理塊的PE、Retention、讀取次數(shù)等信息,最后根據(jù)所獲取的環(huán)境溫度、PE、Retention以及讀取次數(shù)等信息,在Calibration Table中查詢存儲陣列判決電壓的偏移量;再然后,控制器通過Read Retry/Read Offset等命令調(diào)整存儲陣列的判決電壓;存儲陣列利用調(diào)整后的判決電壓,讀取存儲單元內(nèi)部的數(shù)據(jù);最后,SSD控制器的ECC解碼單元對所讀取的數(shù)據(jù)進行ECC解碼,以對讀取的數(shù)據(jù)進行糾錯;整個流程可參見圖8所示。
由于采用上述方法,在SSD下電后,SSD內(nèi)部的溫度傳感器以及控制器均處于power down掉電狀態(tài),這些器件均無法運行,那么相應(yīng)的SSD的控制器也就無法記錄下電的時長,以及溫度的變化情況。因此,在SSD再次上電后,并無法獲取下電期間的溫度信息以及存儲時長(Retention)等信息;由于上述兩關(guān)鍵參數(shù)信息無法獲知,將導(dǎo)致在Calibration Table中查詢出的判決電壓的偏移值并不準確,最終造成利用該偏移值讀取的數(shù)據(jù)的誤碼率偏大。在實際應(yīng)用中,申請人發(fā)現(xiàn),在SSD長時間下電,再次上電后,所讀取的數(shù)據(jù)將超過ECC的糾錯能力,將導(dǎo)致無法獲取準確的存儲數(shù)據(jù)。
實施例四
本發(fā)明提供另一種閃存設(shè)備的訪問方法,同樣該方法可具體應(yīng)用于SSD固態(tài)硬盤中長時間下電,且重新上電的情況,如圖9所示,該方法具體如下:
步驟S91:首先分配存儲陣列中的一部分物理塊,用于存儲特定數(shù)據(jù),這些物理塊不用于存儲用戶數(shù)據(jù);存儲陣列的剩余物理塊仍然用于存儲用戶數(shù)據(jù);
具體為,為了方便進行區(qū)別不同功能的物理塊,可將用于存儲特定數(shù)據(jù)的物理塊,稱為參數(shù)塊,將用于存儲用戶數(shù)據(jù)的物理塊,稱為數(shù)據(jù)塊;SSD的存儲陣列可包括多個flash芯片,可具體在每個flash芯片中分配0.5%的物理塊作為參考塊,剩余的99.5%的參數(shù)塊作為數(shù)據(jù)塊;
步驟S92:SSD的控制器對參考塊進行擦寫磨損,以保持參考塊的擦寫次數(shù)與數(shù)據(jù)塊的擦寫次數(shù)相一致。
在實際應(yīng)用中,SSD在寫入數(shù)據(jù)時,會進行全盤磨損均衡,即在本發(fā)明中,假設(shè)SSD中有三個數(shù)據(jù)塊,分別為第一數(shù)據(jù)塊,第二數(shù)據(jù)塊和第三數(shù)據(jù)塊,那么,在寫入數(shù)據(jù)時,SSD的控制器會依次在第一數(shù)據(jù)塊、第二數(shù)據(jù)塊和第三數(shù)據(jù)塊中寫入數(shù)據(jù),而在擦除數(shù)據(jù)時,SSD的控制器也是依次擦除第一數(shù)據(jù)塊、第二數(shù)據(jù)塊和第三數(shù)據(jù)塊內(nèi)的存儲數(shù)據(jù),從而使得數(shù)據(jù)塊的擦寫次數(shù)趨于一致。而關(guān)于如何對參考塊進行擦寫磨損,可具體參見實施例一的論述,在此不再贅述。
步驟S93:SSD的控制器在參考塊中寫入特定數(shù)據(jù),以及在高可靠性存儲介質(zhì)中寫入特定數(shù)據(jù);其中,高可靠性存儲介質(zhì)可具體為NOR Flash芯片中的存儲介質(zhì)。
其中,特定數(shù)據(jù)在寫入?yún)⒖級K時,需進行加擾,無需進行ECC編碼;而實際寫入SSD中的用戶數(shù)據(jù),需同時進行加擾和ECC編碼,而特定數(shù)據(jù)和用戶數(shù)據(jù)的加擾方式相同;在本發(fā)明中可具體將原始特定數(shù)據(jù)或原始用戶數(shù)據(jù)與白噪聲隨機序列進行異或操作,從而得到加擾的特定數(shù)據(jù),或加擾的用戶數(shù)據(jù);在現(xiàn)有技術(shù)中,白噪聲隨機序列可具體由LFSR(Linear Feedback Shift Register,線性反饋移位寄存器)產(chǎn)生,以Page號碼作為該LFSR的初始值。而關(guān)于對用戶數(shù)據(jù)進行的ECC編碼可具體參見實施例四的論述,在此不再贅述。
需要說明的是,對特定數(shù)據(jù)和用戶數(shù)據(jù)進行加擾,主要是為了降低flash芯片的ICI(Inter-Cell Interference,存儲單元間干擾)效應(yīng),ICI效應(yīng)是指在flash芯片中不同存儲單元之間存儲數(shù)據(jù)相互干擾的現(xiàn)象;與上述進行數(shù)據(jù)加擾相應(yīng)的,在存儲陣列讀取加擾的特定數(shù)據(jù)或加擾的用戶數(shù)據(jù)后,還需對數(shù)據(jù)進行解擾,解擾的過程,可具體為:將加擾的特定數(shù)據(jù)或加擾的用戶數(shù)據(jù)再次與白噪聲隨機序列進行異或操作,獲得原始的特定數(shù)據(jù)或原始的用戶數(shù)據(jù)。
在SSD長時間下電,且重新上電后:
步驟S94:,SSD的控制器取參考塊中的特定數(shù)據(jù),
步驟S95:SSD的控制器將獲取的特定數(shù)據(jù)與保存在高可靠性存儲介質(zhì)中的特定數(shù)據(jù)進行逐比特比較,計算誤碼率;
步驟S96:SSD控制器通過存儲陣列的接口命令,將存儲陣列的判決電壓值向低電平方向調(diào)整一個步長;其中一個步長可具體為10mv。接口命令可具體用于調(diào)整存儲陣列的判決電壓。
由于在SSD的下電期電,SSD中的存儲單元的閾值電平只會向低電壓方向偏移,因此只需將存儲陣列的判決電壓向低電壓方向調(diào)整即可。
步驟S97:SSD的控制器判斷判決電壓的總共偏移是否達到最大偏移值,如果否,返回執(zhí)行步驟S94;否則,執(zhí)行步驟S98;其中,最大偏移值可具體為大約為500~900mV;
也就是說,SSD控制器將繼續(xù)按照上述步長調(diào)整讀判決電壓壓的偏移值,重復(fù)執(zhí)行步驟S94-S96統(tǒng)計每一種判決電壓偏移值下特定數(shù)據(jù)的誤碼率,直到達到判決電壓的最大偏移值為止.
步驟S98:獲取誤碼率最小的特定數(shù)據(jù)所對應(yīng)的偏移電壓。
而在確定上述偏移電壓后,SSD的控制器此時可響應(yīng)計算機進行讀寫,而在SSD上電后,對于已存儲數(shù)據(jù)的讀取均采用上述偏移電壓來調(diào)節(jié)判決電壓;而對于在SSD上電后寫入數(shù)據(jù)的讀取,由于此時存儲數(shù)據(jù)的Retention時長已經(jīng)可以獲得,可具體采用實施例四所公開的方法查詢偏移電平,然后基于此偏移電平調(diào)整的判決電壓進行數(shù)據(jù)讀取。
需要說明的是,雖然實施例四中公開了影響存儲單元的閾值電壓Vth偏移的因素有PE、Retention時長、讀取次數(shù)以及環(huán)境溫度等因素,但決定閾值電壓Vth偏移的最主要兩個因素為PE次數(shù)和Retention時長。而在本發(fā)明中,通過對參考塊進行磨損,可保證參考塊與數(shù)據(jù)塊的PE次數(shù)相一致;而由于在SSD長時間下電后,參數(shù)塊的特定數(shù)據(jù)與數(shù)據(jù)塊的用戶數(shù)據(jù)兩者的Retention時長的差異在長時間下電時長的對比下,兩者的差異可幾乎忽略,因此,在本發(fā)明實施例中,對參數(shù)塊進行磨損,即可保證參考塊與數(shù)據(jù)塊的閾值電壓Vth偏移相一致,當然在本發(fā)明實施例中,在SSD上電時可具體采用實施例四所提供的方法,調(diào)節(jié)存儲陣列的判決電壓;采用本發(fā)明實施例中的方法,可以解決由于SSD長時間下電后存儲單元誤碼過高,導(dǎo)致存儲數(shù)據(jù)無法恢復(fù)的問題。
實施例五
本發(fā)明還提供另一種閃存設(shè)備的訪問方法,該閃存設(shè)備包括控制器和存儲陣列,存儲陣列包括特定存儲單元和用戶存儲單元,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓Vread,方法具體如下:
控制器獲取特定存儲單元的當前閾值電壓Vth,以及原始閾值電壓Vth,原始閾值電壓Vth為在寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓Vth;
控制器根據(jù)特定存儲單元的當前閾值電壓Vth和原始閾值電壓Vth,確定判決電壓Vread;
可選的,控制器可根據(jù)特定存儲單元的當前閾值電壓Vth和原始閾值電壓Vth,確定存儲單元閾值電壓Vth的偏移量,然后,再將預(yù)設(shè)的判決電壓Vread按照偏移量進行偏移即可;比如,仍參照圖1,假設(shè)一特定存儲單元所存儲的特定數(shù)據(jù)為0,且該特定存儲單元的原始閾值電壓Vth為5V,經(jīng)過一段時間后,由于存儲單元的電子泄露,該特定存儲單元的閾值電壓Vth變?yōu)?V,那么可確定該特定存儲單元的閾值電壓Vth的偏移量為3V(5V-2V=3V);而相應(yīng)的將判決電壓Vread的值也向左偏移一定數(shù)量即可,具體可如圖4所示。由于在實際應(yīng)用中,特定存儲單元可以包含多個存儲元,在本發(fā)明實施例中,可首先確定特定存儲單元中每個發(fā)生電荷泄露的存儲元(以SLC進行舉例說明,即存儲狀態(tài)“0”的存儲元)的閾值電壓Vth偏移量,然后計算這些存儲元的閾值電壓Vth偏移量的平均值,可具體采用現(xiàn)有技術(shù)中的算術(shù)平均法或加權(quán)平均法求平均值;最后,將判決電壓Vread的值根據(jù)上述平均值進行偏移。
可選的,控制器內(nèi)可預(yù)先存儲有特定數(shù)據(jù)閾值電壓Vth的概率分布情況,比如,仍參照圖1,對于SLC類型的閃存設(shè)備,其存儲數(shù)據(jù)“0”的閾值電壓Vth的概率分布如圖1中的右圖所示,而其存儲數(shù)據(jù)“1”的閾值電壓Vth的概率分布如圖1中的左圖所示。然后,根據(jù)特定存儲單元的原始閾值電壓Vth與當前閾值電壓Vth,確定特定存儲單元的閾值電壓Vth的偏移量;關(guān)于如何計算閾值電壓Vth的偏移量,可具體參見上述記載;最后,根據(jù)當前計算的閾值電壓Vth的偏移量,對整個閾值電壓Vth的概率分布情況進行相應(yīng)的偏移,以及,根據(jù)偏移后的閾值電壓Vth的概率分布情況,確定判決電壓Vread;比如,如圖5所示,當確定一特定存儲單元的閾值電壓Vth的偏值為3V,那么將整個閾值電壓Vth的概率分布情況也向左相應(yīng)的偏移3V,最后,確定偏移后的閾值電壓Vth的概率分布情況中的最小閾值電壓Vth;將判決電壓Vread設(shè)置為大于最小閾值電壓Vth的任一值即可。
控制器利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,采用上述方法,可根據(jù)存儲單元閾值電壓Vth的實時偏移情況,確定判決電壓Vread,從而可減少對存儲單元存儲數(shù)據(jù)的誤判。
實施例六
與上述方法相對應(yīng)的,本發(fā)明還提供一種閃存設(shè)備的訪問裝置,閃存設(shè)備至少包括存儲陣列,存儲陣列包括特定存儲單元和用戶存儲單元,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,如圖10所示,閃存設(shè)備的訪問裝置10至少包括:讀取單元101,用于讀取特定存儲單元中存儲的特定數(shù)據(jù);確定單元102,用于根據(jù)讀取的特定數(shù)據(jù),確定判決電壓;讀取單元101,還用于利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
可選的,讀取單元101在讀取特定存儲單元中存儲的特定數(shù)據(jù)時,具體用于:獲取特定存儲單元的當前閾值電壓;比較預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù)。
可選的,確定單元102,具體用于:計算確定的特定數(shù)據(jù)的誤碼率;在誤碼率小于預(yù)設(shè)閾值時,將預(yù)設(shè)判決電壓作為確定的判決電壓。
可選的,預(yù)設(shè)判決電壓有至少兩個,讀取單元101在讀取特定存儲單元中存儲的特定數(shù)據(jù)時,具體用于:比較每個預(yù)設(shè)判決電壓與特定存儲單元的當前閾值電壓,確定特定存儲單元中存儲的特定數(shù)據(jù);確定單元102,具體用于:計算根據(jù)每個預(yù)設(shè)判決確定的特定數(shù)據(jù)的誤碼率;選擇誤碼率最小的確定的特定數(shù)據(jù)對應(yīng)的預(yù)設(shè)判決電壓作為確定的判決電壓。
可選的,確定單元102在計算確定的特定數(shù)據(jù)的誤碼率時,具體用于:比較確定的特定數(shù)據(jù)和記錄的原始特定數(shù)據(jù),獲得確定的特定數(shù)據(jù)的誤碼率。
可選的,閃存設(shè)備的訪問裝置10還可包括:磨損單元,用于根據(jù)用戶存儲單元的磨損特性對特定存儲單元進行磨損操作,以使特定存儲單元和用戶存儲單元的磨損特性相一致。重寫入單元,用于在將用戶數(shù)據(jù)寫入至用戶存儲單元時,同步將特定數(shù)據(jù)重新寫入至特定存儲單元,以使得特定存儲單元和用戶存儲單元存儲數(shù)據(jù)的時長特性相一致。
由上可見,在本發(fā)明實施例中,預(yù)先將存儲陣列分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的存儲數(shù)據(jù)的誤判。
實施例七
與上述方法相對應(yīng)的,本發(fā)明還提供一種閃存設(shè)備的訪問裝置,閃存設(shè)備至少包括存儲陣列,存儲陣列包括特定存儲單元和用戶存儲單元,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓,裝置包括:獲取單元,用于獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓;判決電壓確定單元,用于根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓;用戶數(shù)據(jù)讀取單元,用于利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,采用上述方法,可根據(jù)存儲單元閾值電壓Vth的實時偏移情況,確定判決電壓Vread,從而可減少對存儲單元存儲數(shù)據(jù)的誤判。
實施例八
與上述方法和裝置相對應(yīng)的,本發(fā)明還提供一種閃存設(shè)備的訪問系統(tǒng),如圖11所示,閃存設(shè)備的訪問系統(tǒng)11包括閃存設(shè)備的訪問裝置111和存儲陣列112;
存儲陣列112包括特定存儲單元和用戶存儲單元,特定存儲單元用于存儲特定數(shù)據(jù),用戶存儲單元用于存儲用戶數(shù)據(jù),特定數(shù)據(jù)用于確定讀取用戶數(shù)據(jù)的判決電壓;
閃存設(shè)備的訪問裝置111用于:讀取特定存儲單元中存儲的特定數(shù)據(jù);根據(jù)讀取的特定數(shù)據(jù),確定判決電壓;利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);
或,閃存設(shè)備的訪問裝置111用于:獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓;根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓;利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,預(yù)先將存儲陣列的存儲單元分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的存儲數(shù)據(jù)的誤判。
實施例九
與上述方法相對應(yīng)的,本發(fā)明還提供一種可讀介質(zhì),包括執(zhí)行指令,當存儲控制器的處理器執(zhí)行執(zhí)行指令時,存儲控制器執(zhí)行上述實施例所公開的訪問閃存設(shè)備的方法。
本發(fā)明還公開了一種存儲控制器,如圖12所示,,存儲控制器12包括:處理器121、存儲器122和總線123;
存儲器122用于存儲執(zhí)行指令,處理器121與存儲器122通過總線123連接,當存儲控制器運行時,處理器121執(zhí)行存儲器122存儲的執(zhí)行指令,以使存儲控制器執(zhí)行:
讀取特定存儲單元中存儲的特定數(shù)據(jù);
根據(jù)讀取的特定數(shù)據(jù),確定判決電壓;
利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);
或,執(zhí)行:
獲取特定存儲單元的當前閾值電壓,以及原始閾值電壓,原始閾值電壓為寫入特定數(shù)據(jù)時特定存儲單元的閾值電壓;
根據(jù)特定存儲單元的當前閾值電壓和原始閾值電壓,確定判決電壓;
利用確定的判決電壓,讀取用戶存儲單元中存儲的用戶數(shù)據(jù)。
由上可見,在本發(fā)明實施例中,預(yù)先將存儲陣列的存儲單元分為特定存儲單元和用戶存儲單元,且特定存儲單元和用戶存儲單元的存儲特性相一致,兩者的閾值電壓Vth偏移相一致,從而兩者所采用的判決電壓Vread趨于一致;而本發(fā)明實施例中,每當在讀取用戶存儲單元中的用戶數(shù)據(jù)時,控制器讀取特定存儲單元中存儲的特定數(shù)據(jù),且根據(jù)所讀取的特定數(shù)據(jù),確定判決電壓Vread,最后,利用確定的判決電壓Vread,讀取用戶存儲單元中存儲的用戶數(shù)據(jù);由于特定存儲單元和用戶存儲單元的閾值電壓Vth偏移趨于一致,因此,利用在特定存儲單元中確定的判決電壓Vread對用戶存儲單元的存儲數(shù)據(jù)進行讀取,可減少由于閾值電壓Vth的偏移,而造成的存儲數(shù)據(jù)的誤判。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。