。
[0059] 根據(jù)本發(fā)明的實(shí)施例,匹配模塊具體用于:根據(jù)映射到每個(gè)可擦寫次數(shù)范圍的所 有存儲(chǔ)塊的數(shù)目,將多個(gè)數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍匹配
[0060] 由于根據(jù)數(shù)據(jù)大小以及每個(gè)可擦寫次數(shù)范圍的所有存儲(chǔ)塊的數(shù)目,來進(jìn)行匹配, 使得可以實(shí)現(xiàn)動(dòng)態(tài)的匹配操作,即當(dāng)可擦寫次數(shù)范圍對應(yīng)的存儲(chǔ)塊的數(shù)目變化時(shí),可以及 時(shí)的進(jìn)行更新。因而進(jìn)一步充分利用了閃存的性能。
[0061] 根據(jù)本發(fā)明的實(shí)施例,多個(gè)數(shù)據(jù)熱度級別是根據(jù)數(shù)據(jù)大小確定的。
[0062] 由于數(shù)據(jù)大小更加便于獲取,因此采用數(shù)據(jù)大小來進(jìn)行匹配,使得匹配的過程更 加有效率。
[0063] 根據(jù)本發(fā)明的實(shí)施例,匹配模塊具體用于:根據(jù)公式1和公式2將多個(gè)數(shù)據(jù)熱度級 別和多個(gè)可擦寫次數(shù)范圍匹配,公式1為:
[0067] 其中,N為數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍的個(gè)數(shù);Sizerii表示具有第k個(gè)數(shù) 據(jù)熱度級別的數(shù)據(jù)的大??;n A為第k個(gè)數(shù)據(jù)熱度級別的數(shù)據(jù)的個(gè)數(shù);ngk為映射到第k個(gè)可 擦寫次數(shù)范圍的所有存儲(chǔ)塊的個(gè)數(shù);在寫操作速度表中,滿足公式1的j。的最大值為第i個(gè) 數(shù)據(jù)熱度級別所對應(yīng)的至少一個(gè)可擦寫次數(shù)范圍的序數(shù)的上界,滿足公式2的j f的最大值 為第i個(gè)數(shù)據(jù)熱度級別所對應(yīng)的至少一個(gè)可擦寫次數(shù)范圍的序數(shù)的下界。
[0068] 應(yīng)理解,可擦寫次數(shù)范圍的序數(shù)可以是從按照可擦寫次數(shù)從大到小的順序,也可 以按照從小到大的順序。由于針對每個(gè)可擦寫次數(shù)范圍來精確地確定對應(yīng)的數(shù)據(jù)熱度級 另IJ,同時(shí)考慮到每個(gè)存儲(chǔ)塊的充分利用,因此使得閃存的性能達(dá)到最優(yōu)。
[0069] 上面描述了根據(jù)本發(fā)明實(shí)施例的閃存的控制器,下面分別結(jié)合圖3描述根據(jù)本發(fā) 明實(shí)施例的控制閃存的寫操作的方法。
[0070] 圖3是根據(jù)本發(fā)明的另一實(shí)施例的控制閃存的寫操作的方法的示意性流程圖。圖 3的方法由閃存的控制器執(zhí)行,具體包括:
[0071] 310、獲取寫操作速度表,寫操作速度表記錄有多個(gè)可擦寫次數(shù)范圍和多個(gè)寫操作 速度之間的--對應(yīng)關(guān)系;
[0072] 320、確定目標(biāo)存儲(chǔ)塊的實(shí)際可擦寫次數(shù),其中,目標(biāo)存儲(chǔ)塊的實(shí)際可擦寫次數(shù)與 目標(biāo)存儲(chǔ)塊的默認(rèn)可擦寫次數(shù)相異,目標(biāo)存儲(chǔ)塊的默認(rèn)可擦寫次數(shù)存儲(chǔ)在閃存中;
[0073] 330、根據(jù)實(shí)際可擦寫次數(shù)所在的可擦寫次數(shù)范圍,查找寫操作速度表,以確定實(shí) 際可擦寫次數(shù)所對應(yīng)的寫操作速度;
[0074] 340、根據(jù)實(shí)際可擦寫次數(shù)所對應(yīng)的寫操作速度,控制針對目標(biāo)存儲(chǔ)塊的寫操作。
[0075] 本發(fā)明的實(shí)施例可以確定與目標(biāo)存儲(chǔ)塊的默認(rèn)可擦寫次數(shù)相異的實(shí)際可擦寫次 數(shù),然后根據(jù)實(shí)際可擦寫次數(shù)所在的可擦寫次數(shù)范圍,查找寫操作速度表,以確定實(shí)際可擦 寫次數(shù)所對應(yīng)的寫操作速度,進(jìn)而控制針對目標(biāo)存儲(chǔ)塊的寫操作。由于考慮了儲(chǔ)存塊的制 程差異,針對每個(gè)儲(chǔ)存塊確定了實(shí)際可擦寫次數(shù),因此提高了存儲(chǔ)塊的性能。換句話說,挖 掘了閃存的制程差異現(xiàn)象并依據(jù)現(xiàn)有工作對閃存塊進(jìn)行加速,提高了閃存的寫性能。
[0076] 根據(jù)本發(fā)明的實(shí)施例,確定目標(biāo)存儲(chǔ)塊的實(shí)際可擦寫次數(shù),包括:根據(jù)寫操作速度 表,確定目標(biāo)存儲(chǔ)塊的實(shí)際可擦寫次數(shù)。
[0077] 根據(jù)本發(fā)明的實(shí)施例,根據(jù)寫操作速度表,確定目標(biāo)存儲(chǔ)塊的實(shí)際可擦寫次數(shù),包 括:從寫操作速度表中,確定多個(gè)寫操作速度;基于多個(gè)寫操作速度,多次寫入測試數(shù)據(jù), 其中,測試數(shù)據(jù)是每次以多個(gè)寫操作速度中不同的寫操作速度寫入的;多次讀取測試數(shù)據(jù) 以及測試數(shù)據(jù)的糾錯(cuò)碼,以確定在讀取的測試數(shù)據(jù)為正確的情況下,寫入所讀取的正確的 測試數(shù)據(jù)時(shí)采用的最大的寫操作速度;根據(jù)最大的寫操作速度,確定實(shí)際可擦寫次數(shù)。
[0078] 根據(jù)本發(fā)明的實(shí)施例,多次讀取測試數(shù)據(jù)以及測試數(shù)據(jù)的糾錯(cuò)碼,包括:
[0079] 針對目標(biāo)存儲(chǔ)塊的每個(gè)存儲(chǔ)頁,多次讀取測試數(shù)據(jù)和測試數(shù)據(jù)的糾錯(cuò)碼,以確定 在讀取的測試數(shù)據(jù)為正確的情況下,寫入所讀取的正確的測試數(shù)據(jù)時(shí)采用的最大的寫操作 速度,其中,每個(gè)存儲(chǔ)頁對應(yīng)于每個(gè)最大的寫操作速度,根據(jù)最大的寫操作速度,確定實(shí)際 可擦寫次數(shù),包括:確定所有的最大的寫操作速度中的最小值;根據(jù)最小值對應(yīng)的可擦寫 次數(shù)范圍確定實(shí)際可擦寫次數(shù)。
[0080] 根據(jù)本發(fā)明的實(shí)施例,根據(jù)最小值對應(yīng)的可擦寫次數(shù)范圍確定實(shí)際可擦寫次數(shù), 包括:確定與最小值對應(yīng)的可擦寫次數(shù)范圍相鄰的可擦寫次數(shù)范圍;將相鄰的可擦寫次數(shù) 范圍的上界確定為實(shí)際可擦寫次數(shù)。
[0081] 可選地,作為另一實(shí)施例,圖3的方法還包括:將目標(biāo)存儲(chǔ)塊映射到實(shí)際可擦寫次 數(shù)所在的可擦寫次數(shù)范圍;將多個(gè)數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍匹配,使得多個(gè)數(shù) 據(jù)熱度級別中的每個(gè)數(shù)據(jù)熱度級別對應(yīng)于多個(gè)可擦寫次數(shù)范圍中的至少一個(gè)可擦寫次數(shù) 范圍,其中,多個(gè)數(shù)據(jù)熱度級別包括第一數(shù)據(jù)熱度級別和第二數(shù)據(jù)熱度級別,當(dāng)?shù)谝粩?shù)據(jù)熱 度級別大于第二數(shù)據(jù)熱度級別時(shí),與第一數(shù)據(jù)熱度級別對應(yīng)的可擦寫次數(shù)范圍的下界不小 于與第二數(shù)據(jù)熱度級別對應(yīng)的可擦寫次數(shù)范圍的下界;根據(jù)實(shí)際可擦寫次數(shù)所對應(yīng)的寫操 作速度,控制針對目標(biāo)存儲(chǔ)塊的寫操作,包括:從多個(gè)數(shù)據(jù)熱度級別中,確定目標(biāo)數(shù)據(jù)的數(shù) 據(jù)熱度級別;根據(jù)與目標(biāo)數(shù)據(jù)的數(shù)據(jù)熱度級匹配的可擦寫次數(shù)范圍,確定使用目標(biāo)存儲(chǔ)塊 存儲(chǔ)目標(biāo)數(shù)據(jù)。
[0082] 根據(jù)本發(fā)明的實(shí)施例,將多個(gè)數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍匹配,包括:根 據(jù)映射到每個(gè)可擦寫次數(shù)范圍的所有存儲(chǔ)塊的數(shù)目,將多個(gè)數(shù)據(jù)熱度級別和多個(gè)可擦寫次 數(shù)范圍匹配。
[0083] 根據(jù)本發(fā)明的實(shí)施例,多個(gè)數(shù)據(jù)熱度級別是根據(jù)數(shù)據(jù)大小確定的。
[0084] 根據(jù)本發(fā)明的實(shí)施例,根據(jù)映射到每個(gè)可擦寫次數(shù)范圍的所有存儲(chǔ)塊的數(shù)目,將 多個(gè)數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍匹配,包括:根據(jù)公式1和公式2將多個(gè)數(shù)據(jù)熱度 級別和多個(gè)可擦寫次數(shù)范圍匹配,公式1為:
[0088] 其中,N為數(shù)據(jù)熱度級別和多個(gè)可擦寫次數(shù)范圍的個(gè)數(shù);Sizerii表示具有第k個(gè)數(shù) 據(jù)熱度級別的數(shù)據(jù)的大小;n A為第k個(gè)數(shù)據(jù)熱度級別的數(shù)據(jù)的個(gè)數(shù);ngk為映射到第k個(gè)可 擦寫次數(shù)范圍的所有存儲(chǔ)塊的個(gè)數(shù);在寫操作速度表中,滿足公式1的j。的最大值為第i個(gè) 數(shù)據(jù)熱度級別所對應(yīng)的至少一個(gè)可擦寫次數(shù)范圍的序數(shù)的上界,滿足公式2的j f的最大值 為第i個(gè)數(shù)據(jù)熱度級別所對應(yīng)的至少一個(gè)可擦寫次數(shù)范圍的序數(shù)的下界。
[0089] 圖3的方法與圖2的閃存的控制器更模塊執(zhí)行的操作對應(yīng),此處不再贅述。下面 結(jié)合具體例子,更加詳細(xì)地描述本發(fā)明的實(shí)施例。
[0090] 圖4是根據(jù)本發(fā)明的另一實(shí)施例的控制閃存的寫操作的方法的示意性流程圖。圖 4的方法與圖3的方法相對應(yīng)。在本實(shí)施例中,采用增進(jìn)步長編程脈沖的方式執(zhí)行寫操作, 將增進(jìn)步長編程脈沖的電壓步長作為寫操作速度;將寫操作速度采用的測試速度作為第一 寫操作速度;另外,存儲(chǔ)塊可以看作是目標(biāo)存儲(chǔ)塊。表1和表2為寫操作速度表的例子。
[0094] 表 2
[0095] 410、獲取所述寫操作速度表。例如表1或表2。
[0096] 420、確定實(shí)際可擦寫次數(shù)范圍。
[0097] 確定每個(gè)存儲(chǔ)頁上對應(yīng)的最大的寫操作速度。例如,在每個(gè)存儲(chǔ)頁上都可以執(zhí)行 以下操作:以寫操作速度表中的最大的寫操作速度寫入測試數(shù)據(jù),同時(shí)寫入該測試數(shù)據(jù)的 糾錯(cuò)碼。然后讀取該測試數(shù)據(jù),根據(jù)糾錯(cuò)碼判斷讀取的測試數(shù)據(jù)的正確性。如果讀取的測 試數(shù)據(jù)是錯(cuò)誤的,則繼續(xù)采用寫操作速度表中相鄰的寫操作速度進(jìn)行測試,直到所讀取的 測試數(shù)據(jù)是正確的,然后將寫入該測試數(shù)據(jù)的寫操作速度確定為每個(gè)存儲(chǔ)頁上對應(yīng)的最大 的寫操作速度;如果讀取的第一次寫入的測試數(shù)據(jù)(以最大的寫操作速度寫入的)是正確 的,則直接確定該最大的寫操作速度。
[0098] 然后,為了寫操作的安全性考慮,可以將寫操作速度表中,將多個(gè)最大的寫操作速 度中的最小值所對應(yīng)的可擦寫次數(shù)范圍確定為實(shí)際可擦寫次數(shù)范圍。也可以將比該寫操作 速度更小的速度所對應(yīng)的可擦寫次數(shù)范圍確定為實(shí)際可擦寫次數(shù)范圍。
[0099] 應(yīng)理解,對于每個(gè)寫操作速度進(jìn)行的測試數(shù)據(jù)的正確性,可以進(jìn)行多次測試,再對 測試的結(jié)果取平均值來判讀正確性;也可以至進(jìn)行一次測試;也可以針對不同的寫操作速 度采用不同的測試次數(shù),本發(fā)明的實(shí)施例對此不作限定。還應(yīng)理解,針對每個(gè)存儲(chǔ)頁上的測 試頁也可以采用不同的測量方式,例如,還可以采用在寫操作速度表中從小到大的順序進(jìn) 行測試,或者從特定的寫操作速度開始測試。對于每個(gè)存儲(chǔ)頁可以采用上述任何的方式,本 發(fā)明的實(shí)施例同樣對此不作限定。
[0100] 430、確定實(shí)際可擦寫次數(shù)。
[0101] 優(yōu)選地,可以根據(jù)寫操作速度表,將與實(shí)際可擦寫次數(shù)范圍相鄰的可擦寫次數(shù)范 圍的上界確定為實(shí)際可擦寫次數(shù),例如當(dāng)實(shí)際可擦寫次數(shù)范圍為表1中的18000-20000時(shí), 或者為表2中的18001-20000時(shí),可以把18000確定為實(shí)際可擦寫次數(shù)??紤]到在后續(xù)的 操作中,當(dāng)存儲(chǔ)塊的可擦寫次數(shù)發(fā)生變化時(shí),可能需要重新將存儲(chǔ)塊映射到相應(yīng)的可擦寫 次數(shù)范圍,因此,通常選擇可擦寫次數(shù)范圍的上界。
[0102] 應(yīng)理解也可以將其他的可擦寫次數(shù)確定為實(shí)際可擦寫次數(shù),例如,將更小的可擦 寫次數(shù)確定為實(shí)際可擦寫次數(shù)。
[0103] 440、將存儲(chǔ)塊加入至相應(yīng)隊(duì)列。
[0104] 例如,存儲(chǔ)塊的當(dāng)前的可擦寫次數(shù)為21000,將該存儲(chǔ)塊對應(yīng)于表1中當(dāng)前可擦寫 次數(shù)范圍20000-22000。隨著存儲(chǔ)塊的不斷使用,當(dāng)存儲(chǔ)塊的可擦寫次數(shù)為20000時(shí),將該 存儲(chǔ)塊的地址信息映射到可擦寫次數(shù)范圍18000-20000。換句話說,在該存儲(chǔ)塊接下來的使 用過程中,是位于可