亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種數(shù)據(jù)寫入方法及裝置的制造方法

文檔序號:9489246閱讀:358來源:國知局
一種數(shù)據(jù)寫入方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)寫入方法及裝置。
【背景技術(shù)】
[0002] 固態(tài)硬盤(SolidStateDisk,SSD)是存儲領(lǐng)域常用的數(shù)據(jù)載體。由于它具有高性 能、低延遲、低功耗、環(huán)境適應(yīng)性強(qiáng)等優(yōu)點(diǎn),同時成本也在不斷降低,因此目前應(yīng)用的越來越 普遍。
[0003]SSD可以采用閃存作為存儲介質(zhì)。一般情況下,人們常采用對SSD閃存執(zhí)行寫操作 的速度(也即寫速度)來衡量SSD的使用性能。寫速度越大,通常表示該SSD的使用性能 越好。寫速度的大小與執(zhí)行寫操作時的編程電壓成正比,寫速度越大,編程電壓越大。這里 的編程電壓是在對每個存儲單元進(jìn)行編程(也即寫入數(shù)據(jù))時采用的充電電壓步幅。存儲 單兀分為單層單兀(SingleLevelCell,SLC)和多層單兀(Multi-LevelCell,MLC)兩種。 每個SLC的大小為1比特(bit),每個MLC的大小為2比特(bit)。如圖1 (a)和圖1 (b)所 示,分別為在編程電壓Δνρρ?和AVpp2(AVppl〈AVpp2)下每個MLC數(shù)據(jù)(分別為11、10、 01和00)對應(yīng)的閾值電壓(Vth)分布示意圖。從圖中可見,編程電壓越大,存儲數(shù)據(jù)對應(yīng) 的閾值電壓的分布范圍越大,不同存儲數(shù)據(jù)的閾值電壓之間的間隔越小。若存儲單元中出 現(xiàn)電子流失,閾值電壓就會發(fā)生變化,如圖2所示,為電子流失導(dǎo)致閾值電壓發(fā)生變化的示 意圖;在這種情況下,不同存儲數(shù)據(jù)的閾值電壓之間的間隔越小,就越容易導(dǎo)致存儲數(shù)據(jù)出 錯。
[0004] 對于SSD,可以采用對閃存中的每個閃存塊總共可執(zhí)行的編程/擦除(Program/ Erase,P/E)次數(shù)來衡量該SSD閃存的壽命大小。一次P/E操作是指對閃存塊以頁為單位 執(zhí)行至少一次寫入動作后,又以閃存塊為單位對整個閃存塊的存儲數(shù)據(jù)執(zhí)行了一次擦除動 作。P/E操作會對SSD的閃存造成磨損,破壞閃存的絕緣層,導(dǎo)致電子流失。因此,對一個閃 存塊執(zhí)行的P/E操作次數(shù)越多,該閃存塊存儲的數(shù)據(jù)就越容易出錯。SSD控制器可以采用糾 錯碼?rrorCorrectingCode,ECC)來對讀取的存儲數(shù)據(jù)進(jìn)行糾錯,但是,若存儲數(shù)據(jù)出錯 的程度超出了ECC的糾錯范圍,ECC便無法對該存儲數(shù)據(jù)進(jìn)行糾錯,也就意味著SSD閃存壽 命的終結(jié)。
[0005] 為了提高SSD的使用性能,人們一般將寫速度設(shè)置的較大。從上述分析可知,寫速 度越大,不同存儲單元的閾值電壓之間的間隔越小,存儲數(shù)據(jù)出錯的幾率及出錯程度就越 大。尤其在SSD閃存的壽命后期,由于已執(zhí)行了較多次的P/E操作,電子流失速度變得很 快,如果這時仍采用較大的寫速度,很容易造成存儲數(shù)據(jù)出錯,而存儲數(shù)據(jù)出錯程度一旦超 出ECC的糾錯范圍,也就導(dǎo)致了SSD閃存壽命的終結(jié)。
[0006] 綜上,SSD的閃存壽命與SSD的使用性能之間存在較大矛盾:若為了提高SSD使用 性能而采用較大的寫速度,在SSD閃存的壽命后期很容易導(dǎo)致存儲數(shù)據(jù)出錯程度較大而終 結(jié)SSD閃存的壽命;若為了延長SSD閃存壽命而采用較小的寫速度,又降低了SSD的使用性 能。

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

[0007] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)寫入方法及裝置,用以解決SSD的閃存壽命與SSD的 使用性能之間存在較大矛盾的問題。
[0008] 第一方面,提供一種數(shù)據(jù)寫入方法,包括:
[0009] 固態(tài)硬盤SSD控制器根據(jù)當(dāng)前對所述SSD的閃存中的每個閃存塊平均執(zhí)行的編程 /擦除P/E次數(shù),以及預(yù)設(shè)的P/E次數(shù)范圍分別與寫速度和數(shù)據(jù)保存時長的對應(yīng)關(guān)系,確定 寫速度和數(shù)據(jù)保存時長;
[0010] 所述SSD控制器根據(jù)確定的寫速度,對所述SSD的閃存執(zhí)行除刷新操作外的寫操 作,并
[0011] 根據(jù)確定的數(shù)據(jù)保存時長以及確定的寫速度,對寫入到閃存中的數(shù)據(jù)執(zhí)行刷新操 作;所述刷新操作是將所述閃存中存儲時間超過所述數(shù)據(jù)保存時長的數(shù)據(jù)從最近一次寫入 的位置重新寫入到所述閃存中的其它位置。
[0012] 結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述SSD控制器對所述SSD的閃存執(zhí) 行除刷新操作外的寫操作,包括:
[0013] 所述SSD控制器在接收到主機(jī)發(fā)送的寫請求后,根據(jù)所述寫請求,對所述SSD的閃 存執(zhí)行寫操作;或,
[0014] 所述SSD控制器在確定閃存中空白的閃存塊數(shù)量在所述閃存中所占比率低于設(shè) 定閾值后,將包含無效數(shù)據(jù)的閃存塊中的有效數(shù)據(jù)寫入到空白的閃存頁中。
[0015] 結(jié)合第一方面,或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述SSD控制器根據(jù)當(dāng)前對所述閃存中的每個閃存塊平均執(zhí)行的P/E次數(shù),以及預(yù)設(shè)的 P/E次數(shù)范圍分別與寫速度和數(shù)據(jù)保存時長的對應(yīng)關(guān)系,確定寫速度和數(shù)據(jù)保存時長,包 括:
[0016] 所述SSD控制器根據(jù)當(dāng)前對所述閃存中的每個閃存塊平均執(zhí)行的P/E次數(shù),以及 每種數(shù)據(jù)屬性所對應(yīng)的對應(yīng)關(guān)系表,確定每種數(shù)據(jù)屬性對應(yīng)的寫速度和數(shù)據(jù)保存時長;其 中,所述對應(yīng)關(guān)系表中記錄有預(yù)設(shè)的P/E次數(shù)范圍與寫速度和數(shù)據(jù)保存時長的對應(yīng)關(guān)系; 所述數(shù)據(jù)屬性包括熱數(shù)據(jù)和冷數(shù)據(jù),所述熱數(shù)據(jù)的訪問頻率大于所述冷數(shù)據(jù)的訪問頻率;
[0017] 所述SSD控制器根據(jù)確定的寫速度,對所述SSD的閃存執(zhí)行除刷新操作外的寫操 作,包括:所述SSD控制器根據(jù)所述除刷新操作外的寫操作所需要寫入到閃存中的數(shù)據(jù)的 數(shù)據(jù)屬性,從確定的每種數(shù)據(jù)屬性對應(yīng)的寫速度中,選擇寫速度,并根據(jù)選擇的寫速度,對 所述SSD的閃存執(zhí)行所述除刷新操作外的寫操作;
[0018] 所述SSD控制器根據(jù)確定的數(shù)據(jù)保存時長以及確定的寫速度,對寫入到閃存中的 數(shù)據(jù)執(zhí)行刷新操作,包括:所述SSD控制器根據(jù)寫入到閃存中的數(shù)據(jù)的數(shù)據(jù)屬性,從確定的 每種數(shù)據(jù)屬性對應(yīng)的數(shù)據(jù)保存時長中,選擇數(shù)據(jù)保存時長,根據(jù)選擇的數(shù)據(jù)保存時長以及 冷數(shù)據(jù)對應(yīng)的寫速度,對寫入到閃存中的數(shù)據(jù)執(zhí)行刷新操作。
[0019] 結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述SSD 控制器根據(jù)選擇的寫速度,對所述SSD的閃存執(zhí)行所述除刷新操作外的寫操作,包括:
[0020] 所述SSD控制器根據(jù)選擇的寫速度,以頁為單位向所述閃存中寫入數(shù)據(jù);針對寫 入數(shù)據(jù)的每一頁,在該頁中記錄該頁的帶外00B信息,所述00B信息包括該頁的頁號、與該 頁在寫入順序上相鄰的前一頁的頁號、與該頁在寫入順序上相鄰的后一頁的頁號和在該頁 寫入數(shù)據(jù)的時間;并
[0021] 在向所述閃存中的任一頁寫入數(shù)據(jù)后,根據(jù)寫入的數(shù)據(jù)的數(shù)據(jù)屬性,更新所述SSD 控制器維護(hù)的該數(shù)據(jù)屬性對應(yīng)的失效時間隊(duì)列信息;所述失效時間隊(duì)列信息包括之前寫入 具有該數(shù)據(jù)屬性的數(shù)據(jù)且未更新的頁中,最早寫入數(shù)據(jù)的一頁的頁號和最近一次寫入數(shù)據(jù) 的一頁的頁號;
[0022] 所述SSD控制器根據(jù)選擇的數(shù)據(jù)保存時長以及冷數(shù)據(jù)對應(yīng)的寫速度,對寫入到閃 存中的數(shù)據(jù)執(zhí)行刷新操作,包括:
[0023] 針對任一種數(shù)據(jù)屬性,所述SSD控制器基于預(yù)設(shè)的刷新周期,根據(jù)該數(shù)據(jù)屬性對 應(yīng)的失效時間隊(duì)列信息中所述最早寫入數(shù)據(jù)的一頁的頁號或最近一次寫入數(shù)據(jù)的一頁的 頁號、所述閃存中寫入數(shù)據(jù)的頁的00B信息以及選擇的數(shù)據(jù)保存時長,確定需要執(zhí)行刷新 操作的頁;
[0024] 所述SSD控制器根據(jù)冷數(shù)據(jù)對應(yīng)的寫速度,對確定的所述需要執(zhí)行刷新操作的頁 執(zhí)行刷新操作,記錄刷新后的頁的00B信息,并更新所述冷數(shù)據(jù)對應(yīng)的失效時間隊(duì)列信息。
[0025] 結(jié)合第一方面,或第一方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式 中,所述SSD控制器根據(jù)確定的寫速度,對所述SSD的閃存執(zhí)行除刷新操作外的寫操作,包 括:
[0026] 所述SSD控制器根據(jù)確定的寫速度,以頁為單位向所述閃存中寫入數(shù)據(jù);針對寫 入數(shù)據(jù)的每一頁,在該頁中記錄該頁的帶外00B信息,所述00B信息包括該頁的頁號、與該 頁在寫入順序上相鄰的前一頁的頁號、與該頁在寫入順序上相鄰的后一頁的頁號和在該頁 寫入數(shù)據(jù)的時間;并
[0027] 在向所述閃存中的任一頁寫入數(shù)據(jù)后,更新所述SSD控制器維護(hù)的失效時間隊(duì)列 信息;所述失效時間隊(duì)列信息包括之前寫入數(shù)據(jù)且未更新的頁中,最早寫入數(shù)據(jù)的一頁的 頁號和最近一次寫入數(shù)據(jù)的一頁的頁號;
[0028] 所述SSD控制器根據(jù)確定的數(shù)據(jù)保存時長以及確定的寫速度,對寫入到閃存中的 數(shù)據(jù)執(zhí)行刷新操作,包括:
[0029] 所述SSD控制器基于預(yù)設(shè)的刷新周期,根據(jù)所述失效時間隊(duì)列信息中所述最早寫 入數(shù)據(jù)的一頁的頁號或最近一次寫入數(shù)據(jù)的一頁的頁號、所述閃存中寫入數(shù)據(jù)的頁的00B 信息以及確定的數(shù)據(jù)保存時長,確定需要執(zhí)行刷新操作的頁;
[0030] 所述SSD控制器根據(jù)確定的寫速度,對確定的所述需要執(zhí)行刷新操作的頁執(zhí)行刷 新操作,記錄刷新后的頁的00B信息,并更新所述失效時間隊(duì)列信息。
[0031] 結(jié)合第一方面的第三或第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所 述SSD控制器根據(jù)失效時間隊(duì)列信息中所述最早寫入數(shù)據(jù)的一頁的頁號和最近一次寫入 數(shù)據(jù)的一頁的頁號、所述閃存中寫入數(shù)據(jù)的頁的00B信息以及所述數(shù)據(jù)保存時長,確定需 要執(zhí)行刷新操作的頁,包括:
[0032] 所述SSD控制器根據(jù)所述最早寫入數(shù)據(jù)的一頁的頁號,在所述閃存中查找對應(yīng)所 述最早寫入數(shù)據(jù)的一頁的00B信息;
[0033] 所述SSD控制器根據(jù)查找到的00B信息中包括的在該頁寫入數(shù)據(jù)的時間、所述數(shù) 據(jù)保存時長和當(dāng)前時間,判斷是否需要對所述最早寫入數(shù)據(jù)的一頁執(zhí)行刷新操作;
[0034] 若確定不需要對所述最早寫入數(shù)據(jù)的一頁執(zhí)行刷新操作,則結(jié)束當(dāng)前周期的刷新 操作;
[0035] 若確定需要對所述最早寫入數(shù)據(jù)的一頁執(zhí)行刷新操作,則重復(fù)執(zhí)行以下步驟,直 到確定出不需要執(zhí)行刷新操作的頁或直到確定出需要對所述最近一次寫入數(shù)據(jù)的一頁執(zhí) 行刷新操作:
[0036] 以當(dāng)前確定出的需要執(zhí)行刷新操作的頁作為當(dāng)前頁,根據(jù)當(dāng)前頁的00B信息中包 括的與該當(dāng)前頁在寫入順序上相鄰的后一頁的頁號,在所述閃存中查找該后一頁的00B信 息,并
[0037] 根據(jù)查找到的該后一頁的00B信息中包括的在該后一頁寫入數(shù)據(jù)的時間、所述數(shù) 據(jù)保存時長和當(dāng)前時間,判斷是否需要對該后一頁執(zhí)行刷新操作。
[0038] 結(jié)合第一方面的第三或第四種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所 述SSD控制器根據(jù)失效時間隊(duì)列信息中所述最早寫入數(shù)據(jù)的一頁的頁號或最近一次寫入 數(shù)據(jù)的一頁的頁號、所述閃存中寫入數(shù)據(jù)的頁的00B信息以及所述數(shù)據(jù)保存時長,確定需 要執(zhí)行刷新操作的頁,包括:
[0039] 所述SSD控制器根據(jù)所述最近一次寫入數(shù)據(jù)的一頁的頁號,在所述閃存中查找對 應(yīng)所述最近一次寫入數(shù)據(jù)的一頁的00B信息;
[0040] 所述SSD控制器根據(jù)查找到的00B信息中包括的在該頁寫入數(shù)據(jù)的時間、所述數(shù) 據(jù)保存時長和當(dāng)前時間,判斷是否需要對所述最近一次寫入數(shù)據(jù)的一頁執(zhí)行刷新操作;
[0041] 若確定需要對所述最近一次寫入數(shù)據(jù)的一頁執(zhí)行刷新操作,則確定需要對寫入順 序在所述最近一次寫入數(shù)據(jù)的一頁之前的所有未更新的頁都執(zhí)行刷新操作;
[0042] 若確定不需要對所述最近一次寫入數(shù)據(jù)的一頁執(zhí)行刷新操作,則重復(fù)執(zhí)行以下步 驟,直到確定出需要執(zhí)行刷新操作的頁,則確定需要對寫入順序在確定出的需要執(zhí)行刷新 操作的頁之前的所有頁都執(zhí)行刷新操作,或直到確定不需要對所述最早寫入數(shù)據(jù)的一頁執(zhí) 行刷新操作:
[0043] 以當(dāng)前確定出的不需要執(zhí)行刷新操作的頁作為當(dāng)前頁,根據(jù)當(dāng)前頁的00B信息中 包括的與該當(dāng)前頁在寫入順序上相鄰的前一頁的頁號,在所述閃存中查找該前一頁的00B 信息,并
[0044] 根據(jù)查找到的該前一頁的00B信息中包括的在該前一頁寫入數(shù)據(jù)的時間、所述數(shù) 據(jù)保存時長和當(dāng)前時間,判斷是否需要對該前一頁執(zhí)行刷新操作。
[0045] 第二方面,提供一種數(shù)據(jù)寫入裝置,包括:
[0046] 確定模塊,用于根據(jù)當(dāng)前對固態(tài)硬盤SSD的閃存中的每個閃存塊平均執(zhí)行的編程 /擦除P/E次數(shù),以及預(yù)設(shè)的P/E次數(shù)范圍分別與寫速度和數(shù)據(jù)保存時長的對應(yīng)關(guān)系,確定 寫速度和數(shù)據(jù)保存時長;
[0047] 執(zhí)行模塊,用于根據(jù)所述確定模塊確定的寫速度,對所述SSD的閃存執(zhí)行除刷新 操作外的寫操作,并
[0048] 根據(jù)確定的數(shù)據(jù)保存時長以及確定的寫速度,對寫入到閃存中的數(shù)據(jù)執(zhí)行刷新操 作;所述刷新操作是將所述閃存中存儲時間超過所述數(shù)據(jù)保存時長的數(shù)據(jù)從最近一次寫入 的位置重新寫入到所述閃存中的其它位置。
[0049] 結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊具體用于:
[0050] 在接收到主機(jī)發(fā)送的寫請求后,根據(jù)所述寫請求,對所述SSD的閃存執(zhí)行寫操作; 或,
[0051] 在確定閃存中空白的閃存塊數(shù)量在所述閃存中所占比率低于設(shè)定閾值后,將包含 無效數(shù)據(jù)的閃存塊中的有效數(shù)據(jù)寫入到空白的閃存頁中。
[0052] 結(jié)合第二方面,或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述確定模塊具體用于:
[0053] 根據(jù)當(dāng)前對所述閃存中的每個閃存塊平均執(zhí)行的P/E次數(shù),以及每種數(shù)據(jù)屬性所 對應(yīng)的對應(yīng)關(guān)系表,確定每種數(shù)據(jù)屬性對應(yīng)的寫速度和數(shù)據(jù)保存時長;其中,所述對應(yīng)關(guān)系 表中記錄有預(yù)設(shè)的P/E次數(shù)范圍與寫速度和數(shù)據(jù)保存時長的對應(yīng)關(guān)系;所述數(shù)據(jù)屬性包括 熱數(shù)據(jù)和冷數(shù)據(jù),所述熱數(shù)據(jù)的訪問頻率大于所述冷數(shù)據(jù)的訪問頻率;
[0054] 所述執(zhí)行模塊具體用于根據(jù)以下步驟執(zhí)行所述寫操作:根據(jù)所述除刷新操作外的 寫操作所需要寫入到閃存中的數(shù)據(jù)的數(shù)據(jù)屬性,從確定的每種數(shù)據(jù)屬性對應(yīng)的寫速度中, 選擇寫速度,并根據(jù)選擇的寫速度,對所述SSD的閃存執(zhí)行所述除刷新操作外的寫操作;
[0055] 所述執(zhí)行模塊具體用于根據(jù)以下步驟執(zhí)行所述刷新操作:根據(jù)寫入到閃存中的數(shù) 據(jù)的數(shù)據(jù)屬性,從確定的每種數(shù)據(jù)屬性對應(yīng)的數(shù)據(jù)保存時長中,選擇數(shù)據(jù)保存時長,根據(jù)選 擇的數(shù)據(jù)保存時長以及冷數(shù)據(jù)對應(yīng)的寫速度,對寫入到閃存中的數(shù)據(jù)執(zhí)行刷新操作。
[0056] 結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述執(zhí)行 模塊具體用于根據(jù)以下步驟執(zhí)行所述寫操作:
[0057] 根據(jù)選擇的寫速度,以頁為單位向所述閃存中寫入數(shù)據(jù);針對寫入數(shù)據(jù)的每一頁, 在該頁中記錄該頁的帶外00B信息,所述00B信息包括該頁的頁號、與該頁在寫入順序上相 鄰的前一頁的頁號、與該頁在寫入順序上相鄰的后一頁的頁號和在該頁寫入數(shù)據(jù)的時間; 并
[0058] 在向所述閃存中的任一頁寫入數(shù)據(jù)后,根據(jù)寫入的數(shù)據(jù)的數(shù)據(jù)屬性,更新所述SSD 控制器維護(hù)的該數(shù)據(jù)屬性對應(yīng)的失效時間隊(duì)列信息;所述失效時間隊(duì)列信息包括之前寫入 具有該數(shù)據(jù)屬性的數(shù)據(jù)且未更新的頁中,最早寫入數(shù)據(jù)的一頁的頁號和最近一次寫入數(shù)據(jù) 的一頁的頁號;
[0059] 所述執(zhí)行模塊具體用于根據(jù)以下步驟執(zhí)行所述刷新操作:
[0060] 針對任一種數(shù)據(jù)屬性,基于預(yù)設(shè)的刷新周期,根據(jù)該數(shù)據(jù)屬性對應(yīng)的失效時間隊(duì) 列信息中所述最早寫入數(shù)據(jù)的一頁的頁號或最近一次寫入數(shù)據(jù)的一頁的頁號、所述閃存中 寫入數(shù)據(jù)的頁的00B信息以及選擇的數(shù)據(jù)保存時長,確定需要執(zhí)行刷新操作的頁;
[0061] 根據(jù)冷數(shù)據(jù)對應(yīng)的寫速度,對確定的所述需要執(zhí)行刷新操作的頁執(zhí)行刷新操作, 記錄刷新后的頁的00B信息,并更新所述冷數(shù)據(jù)對應(yīng)的失效時間隊(duì)列信息。
[0062] 結(jié)合第二方面,或第二方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1