亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種閃存垃圾回收優(yōu)化方法與流程

文檔序號:12305223閱讀:507來源:國知局
一種閃存垃圾回收優(yōu)化方法與流程

本發(fā)明屬于固態(tài)盤存儲技術領域,具體涉及一種閃存存儲的垃圾回收優(yōu)化方法。



背景技術:

垃圾回收是固態(tài)盤系統中清除無效數據必要的方法,這一過程在固態(tài)盤的整個生命周期中會頻繁地發(fā)生。垃圾回收主要是針對待回收臟塊內的有效數據進行回收,清除臟塊前,具體的,需要將其中的有效數據轉移到閃存的其他空閑位置,然后才能將臟塊擦除。

現有的數據遷移的方法,是先將有效頁的數據讀回控制器,然后再寫入到nand閃存中。也就是說,臟塊中的數據都需要先讀出到制器,一般的,還需要對這些數據進行再編碼,然后才能寫入閃存。然而這種垃圾回收方法需要耗費大量的時間,還會阻塞系統i/o,是目前以閃存為存儲介質的固態(tài)盤系統急需突破的性能瓶頸。

現有技術中,cn201180041989公開了一種先占式垃圾回收方法,該方法的核心技術在于確定垃圾回收量后,判斷回收量相較于回收閾值的大小,根據回收量的大小進行垃圾回收操作。該方法雖然可以解決需要回收的垃圾量過載的問題,但是對于保證數據存儲可靠性的需求來說,沒有任何的助益。在另一個現有技術cn201510671242中,公開了一種基于數據生存期的固態(tài)盤垃圾回收方法,該方法的核心技術在于,根據應用要求設置遞增的時間數列,根據待寫數據的預期生存期限,選擇不同的方式進行垃圾回收。該方法的目的主要在于保證固態(tài)盤的寫入速度,減小數據移動帶來的訪問開銷,對于固態(tài)盤的數據存儲可靠性沒有提出有效的解決辦法。



技術實現要素:

針對現有技術的以上缺陷或改進需求,本發(fā)明提供了一種閃存垃圾回收優(yōu)化方法及其應用,提出了一種自適應的垃圾回收方法,本發(fā)明技術的優(yōu)化方法在保證固態(tài)盤數據存儲的可靠性的前提下,減少垃圾回收所需時間,提高系統i/o性能。

為實現上述目的,按照本發(fā)明的一個方面,提供了一種閃存垃圾回收優(yōu)化方法,其特征在于,包括,

對確定回收的臟塊內有效數據進行糾錯碼糾錯閾值檢測;

判斷所述有效數據錯誤是否達到其糾錯碼的糾錯閾值;

對錯誤未達到糾錯碼糾錯閾值的有效數據,采用copy-back指令將該有效數據通過寄存器直接寫入閃存中;對錯誤已達到糾錯碼糾錯閾值的有效數據,先將該有效數據讀回控制器,再寫入閃存中。

本發(fā)明技術方案中,首先檢測待回收臟塊內待回收的有效數據的錯誤,確定其是否達到錯碼的最大糾錯能力,即進行糾錯碼糾錯閾值檢測。對于錯誤未達到糾錯碼閾值的有效數據,本發(fā)明技術方案中采用copy-back指令,借助寄存器,先將有效數據存入寄存器,再將數據置入閃存中。由于待回收的臟塊也位于閃存中,通過這種方法,不需要從閃存中取出有效數據即可實現有效數據在閃存內的直接轉移,大大節(jié)省了垃圾回收的時間。對于錯誤已達到糾錯碼閾值的有效數據,已經達到糾錯碼的最大糾錯功能,因此需要將有效數據先讀回控制器,重新進行糾錯碼編碼后,再寫入閃存中。本發(fā)明技術方案的方法,通過檢測有效數據頁中的錯誤大小,判斷錯誤是否達到其糾錯碼的糾錯閾值,從而采取兩種方式對臟塊中的有效數據進行回收,一方面保證了所回收的有效數據的準確性,另一方面也節(jié)約了垃圾回收的時間。

作為本發(fā)明技術方案的一個優(yōu)選,分別對臟塊中每個有效數據頁進行糾錯碼糾錯閾值檢測,以保證寫入閃存的有效數據的可靠性。

臟塊內的有效數據回收是一個持續(xù)的過程,針對每一次具體回收的有效數據,都需要進行閾值檢測。具體而言,針對每一個待回收的數據頁,都對其進行糾錯碼糾錯閾值的檢測,根據錯誤是否達到糾錯碼糾錯閾值,來決定選擇何種方式進行有效數據的回收。其中,因為copy-back指令累積錯誤的特點,在最開始進行有效數據回收的時候即對全部的數據頁進行糾錯碼糾錯閾值的檢測,判斷有效數據頁中的數據錯誤是否達到糾錯碼糾錯的最大能力。對錯誤沒有達到糾錯碼糾錯閾值的有效數據進行回收的時候,直接將數據讀取到閃存同一分組內的寄存器,再將讀取到寄存器內的數據寫入選定的空白頁。對于錯誤達到了糾錯碼糾錯閾值的有效數據,需要送入控制器以及進行再編碼過程,才能寫入閃存。這種回收方式,可以確保每次回收的有效數據的可靠性。

作為本發(fā)明技術方案的一個優(yōu)選,對錯誤未達到糾錯碼糾錯閾值的有效數據的回收處理具體包括,

將所述錯誤未達到糾錯碼糾錯閾值的有效數據寫入閃存中的寄存器;

將寄存器中的有效數據遷移到閃存的空白頁上。

作為本發(fā)明技術方案的一個優(yōu)選,通過寄存器對錯誤未達到糾錯碼糾錯閾值的有效數據進行遷移時,隨時對其進行糾錯碼糾錯閾值檢測。

針對錯誤未達到糾錯碼糾錯閾值的有效數據,本發(fā)明技術方案主要是采用copy-back指令進行數據的遷移。該指令可以在不取出數據的前提下,實現數據從一個閃存頁到另一個閃存頁的轉移過程。這一過程主要是通過寄存器來實現的。寄存器是位于閃存內部的一個組成部分,是一種有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。由于copy-back操作是在分組內直接利用寄存器進行數據遷移,在這一過程無法利用糾錯碼(ecc,errorcorrectioncode)對數據完成糾錯,因而會導致數據遷移完成后數據中錯誤累加,最終超過糾錯碼的糾正能力,進而影響整個系統的可靠性。因此,在每次垃圾回收開始對有效數據進行遷移之前,對回收塊中每個有效頁的數據進行糾錯碼糾錯閾值檢測,即首先對準備遷移的有效頁數據進行錯誤檢測,判斷錯誤是否達到ecc的最大糾錯能力。

作為本發(fā)明技術方案的一個優(yōu)選,對錯誤已達到糾錯碼糾錯閾值的有效數據的回收處理具體包括,

將所述錯誤已達到糾錯碼糾錯閾值的有效數據讀入控制器;

將控制器中的有效數據送入編碼器進行糾錯碼編碼;

將經過糾錯碼編碼的有效數據送回控制器;

判斷臟塊中的有效數據是否全部收集到控制器中,如果是,則將控制器中的有效數據寫入閃存的空閑塊中。

對已達到糾錯碼糾錯閾值的有效數據,如果直接采用copy-back指令對數據進行轉移,錯誤已經達到糾錯碼的糾錯閾值,無法保證寫入閃存的數據可靠性。因此需要對其進行糾錯碼再編碼,確保其具有自我糾錯能力,然后再寫入閃存。具體來說,需要將錯誤達到糾錯碼糾錯閾值的有效數據讀入控制器,即將其寫入控制器的數據緩存區(qū)(buffer),進行糾錯碼再編碼后,再將經過再編碼的有效數據讀回控制器,然后寫入閃存。此外,臟塊內的有效數據寫入閃存是分多次進行的,因此在一次有效數據轉移完成后,為了保證數據回收過程的可靠性,需要對待回收的臟塊進行檢測,確認臟塊內的有效數據都已經完成轉移后,再將控制器的數據緩存區(qū)(buffer)中的有效數據寫入閃存中。

作為本發(fā)明技術方案的一個優(yōu)選,所述有效數據寫入閃存后,判斷臟塊內的有效數據是否已全部寫入閃存,若是,擦除臟塊。

在確認臟塊中的有效數據回收全部完成,將臟塊擦除之前,需要對待擦除的臟塊進行檢測,確認其中的有效數據已經回收完全,只有臟塊中的有效數據確認全部回收后,才能將其擦除。

按照本發(fā)明的另一個方面,提供了一種應用權利要求1~6任一項所述的閃存垃圾回收優(yōu)化方法的垃圾回收方法,其特征在于,包括,

s1確定要進行垃圾回收的臟塊;

s2對臟塊內當前的有效數據進行糾錯碼糾錯閾值檢測;

s3判斷臟塊內當前的有效數據錯誤是否達到糾錯碼的糾錯閾值,若達到,轉步驟s6,否則,轉步驟s4;

s4執(zhí)行copy-back命令,通過閃存分組內的寄存器進行數據遷移;

s5判斷有效數據遷移是否結束,若結束,轉步驟s11,否則,轉步驟s2;

s6將臟塊中的有效數據讀回控制器的數據緩沖區(qū)中;

s7對數據進行糾錯碼編碼;

s8編碼后將數據送回數據緩沖區(qū)中;

s9判斷臟塊中有效數據收集到數據緩沖區(qū)是否全部完成,若完成,轉步驟s10,否則,轉步驟s6;

s10將收集的有效數據寫入閃存的空閑塊中;

s11垃圾回收所有有效數據遷移完成,將臟塊擦除。

本發(fā)明技術方案的垃圾回收方法,確定要回收的垃圾臟塊后,先對待回收的有效數據進行糾錯碼糾錯閾值檢測,對于錯誤未達到糾錯碼糾錯閾值的數據,可以直接采用copy-back指令進行數據遷移。這樣的話,針對錯誤沒有達到糾錯碼糾錯閾值的有效數據的回收可以在閃存中直接完成,大大節(jié)省了垃圾回收的時間。對于錯誤達到了糾錯碼糾錯閾值的數據,則需要將其讀回控制器的數據緩存區(qū)(buffer)并對其進行再編碼后,再寫入閃存。具體來說,就是先將待回收的有效數據讀回控制器的緩存區(qū)(buffer),然后將有效數據從中取出放入編碼器進行再編碼。經過再編碼的有效數據重新回到控制器緩存區(qū)(buffer),然后才能夠寫入空白閃存塊中。這種方法一方面可以通過copy-back指令提高垃圾回收的效率,另一方面也可以通過對錯誤達到糾錯碼糾錯閾值的有效數據頁進行再編碼以保證數據的可靠性,從而整體上保證固態(tài)盤數據存儲的可靠性,減少垃圾回收所需時間,提高系統i/o性能,還可以進一步地提高固態(tài)盤數據存儲的可靠性。

按照本發(fā)明的另一個方面,提供了一種應用權利要求1~6任一項所述的閃存垃圾回收優(yōu)化方法的垃圾回收系統,其特征在于,包括,

臟塊判斷模塊,用于確定要回收的臟塊;

糾錯碼糾錯閾值檢測模塊,用于對臟塊內當前有效數據進行糾錯碼糾錯閾值檢測;

數據遷移模塊,包括第一數據遷移模塊和第二數據遷移模塊,所述第一數據遷移模塊,用于將未達到糾錯碼的糾錯閾值的有效數據,通過閃存分組內的寄存器進行數據遷移;所述第二數據遷移模塊,用于將達到糾錯碼的糾錯閾值的有效數據,先將有效數據讀回控制器,再寫入閃存中;

有效數據判斷模塊,用于判斷臟塊內是否還存在有效數據;

擦除模塊,用于擦除臟塊。

按照本發(fā)明的另一個方面,提供了一種存儲設備,其中存儲有多條指令,所述指令適用于由處理器加載并執(zhí)行:

s1確定要回收的臟塊;

s2對臟塊內當前有效數據進行糾錯碼糾錯閾值檢測;

s3將未達到糾錯碼糾錯閾值的有效數據,通過寄存器直接寫入閃存中;將已達到糾錯碼糾錯閾值的有效數據,先讀回控制器,再寫入閃存中;

s4判斷臟塊內是否還存在有效數據,若是,返回步驟s2;

s5擦除臟塊。

按照本發(fā)明的另一個方面,提供了一種終端,其特征在于,包括:

處理器,適于實現各指令;

存儲設備,適于存儲多條指令,其中所述指令適用于由處理器加載并執(zhí)行:

s1確定要回收的臟塊;

s2對臟塊內當前有效數據進行糾錯碼糾錯閾值檢測;

s3將未達到糾錯碼糾錯閾值的有效數據,通過寄存器直接寫入閃存中;將已達到糾錯碼糾錯閾值的有效數據,先讀回控制器,再寫入閃存中;

s4判斷臟塊內是否還存在有效數據,若是,返回步驟s2;

s5擦除臟塊。

總體而言,通過本發(fā)明所構思的以上技術方案與現有技術相比,能夠取得下列有益效果:

(1)本發(fā)明技術方案的垃圾回收優(yōu)化方法,能夠有效提高垃圾回收的效率,在將臟塊內的有效數據寫入閃存之前,先對其進行糾錯碼糾錯閾值檢測,在保證閃存存儲可靠性的前提下,對垃圾回收采取copy-back的方式進行數據遷移,將臟塊中有效頁的數據直接在分組內經過分組內的寄存器遷移到另外的數據塊中,減少了垃圾回收傳統的數據遷移的傳輸延時,有效提高了垃圾回收的效率,進而提高系統整體的i/o性能。

(2)本發(fā)明技術方案的垃圾回收優(yōu)化方法,采用了糾錯碼糾錯閾值檢測機制,在回收有效數據前先對數據是否達到ecc糾錯閾值進行檢測,一旦copy-back操作導致有效數據錯誤累加達到ecc最大糾錯能力時,即更改數據回收方式,變?yōu)槔厥諅鹘y的數據遷移方式。此機制保證了數據發(fā)生的錯誤不超過ecc的最大糾錯能力,保證了閃存存儲的可靠性。

附圖說明

圖1是本發(fā)明實施例的閃存存儲的垃圾回收優(yōu)化方法的流程圖;

圖2是本發(fā)明實施例的垃圾回收數據遷移結構框圖。

具體實施方式

為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。

本發(fā)明技術方案的目的在于提供一種糾錯碼(ecc)糾錯閾值檢測機制,對垃圾回收的數據遷移是采用閃存內直接遷移還是采用傳統的數據遷移方式進行判斷決策。

在垃圾回收數據遷移時,首先根據臟塊內的有效數據發(fā)生的錯誤進行ecc糾錯閾值檢測,判斷所發(fā)生的錯誤是否已經達到ecc糾錯的最大能力,如果已經達到,則采用垃圾回收傳統的數據遷移方式,將臟塊中的有效數據讀回控制器的數據buffer中,對數據進行ecc編碼,將數據送回數據buffer后判斷臟塊中有效數據收集到buffer是否全部完成,完成后將收集的有效數據寫入閃存中另外的空閑塊;如果發(fā)生的錯誤未達到ecc糾錯的最大能力,則采用copy-back命令直接在閃存內進行數據遷移。

數據遷移一般是通過copy-back操作完成,它是固態(tài)盤系統提供的一種高級命令,支持同一個分組(plane)內不同數據塊之間的數據,通過分組內的寄存器完成數據遷移。通過這一命令,可以減少一般垃圾回收過程中數據在閃存介質和控制器中數據buffer的傳輸過程,減少傳輸延時,提高垃圾回收的效率,進而提升整個系統的性能。然而,由于copy-back操作是在分組內進行數據遷移,其無法利用差錯控制編碼(ecc)完成數據的糾錯,在進行數據遷移的過程中,會導致數據中錯誤累加,最終超過ecc的糾正能力,影響整個系統的可靠性。另一方面,隨著copy-back和寫入/擦除等操作對存儲單元的損耗,閃存的原始比特誤碼率(rber)會越來越高。為了保證數據的安全性,需要使用差錯控制編碼(ecc)來對數據進行檢錯糾錯。但是差錯控制編碼的糾錯能力是有限的,當原始比特誤碼率(rber)超過某一閾值時,差錯控制編碼糾錯將不能滿足數據存儲的可靠性要求。因此,如何在保證數據存儲可靠性的前提下對閃存存儲的垃圾回收進行優(yōu)化是一個很值得研究的問題。有助于減少垃圾回收所需時間,提高系統i/o性能。

在采用copy-back命令直接在閃存內進行數據遷移時,有可能在所有有效數據遷移完成之前數據發(fā)生的錯誤累加達到ecc的最大糾錯能力,此時將不能繼續(xù)采用copy-back命令對數據進行遷移,而需要采用垃圾回收傳統的數據遷移方式進行數據遷移,所以在采用copy-back命令進行數據遷移時,ecc糾錯閾值檢測器需要隨時對其進行檢測,判斷錯誤是否達到ecc的最大糾錯能力,既保證了閃存存儲的可靠性,又提高了垃圾回收的效率。全部的有效數據遷移完成之后,對臟塊進行擦除。

如圖1所示,本發(fā)明實施例的閃存存儲的垃圾回收優(yōu)化方法包括以下步驟:

(1)垃圾回收確定要回收的臟塊。固態(tài)盤經過一段時間的使用后,會產生許多無效數據。在清除這些無效數據之前,需要先確定固態(tài)盤中的垃圾臟塊所在的位置。具體來說,是確定閃存中需要清除的垃圾臟塊的位置。

(2)對臟塊內當前的有效數據進行糾錯碼(ecc)糾錯閾值檢測。確定垃圾臟塊所在位置后,需要進一步對該臟塊進行檢測。一般來說,臟塊內的數據內容并不是全部需要清除的,對于其中的一些有效數據需要轉存到固態(tài)盤的其他位置。本發(fā)明技術方案的實施例中,在轉移存儲有效數據之前,對有效數據進行了糾錯碼的糾錯閾值檢測。糾錯碼的糾錯閾值是有限的,一個糾錯碼只能對一定范圍內的錯誤進行糾錯。具體來說,本發(fā)明技術方案的實施例中對有效數據進行糾錯碼糾錯閾值檢測,是為了確認該有效數據中的錯誤,是否達到其糾錯碼的糾錯范圍。

(3)判斷臟塊內當前的有效數據錯誤是否達到ecc的糾錯閾值(ecc的最大糾錯能力),若達到,轉(6),否則,轉(4)。針對步驟(2)中的分類,即錯誤達到了糾錯碼的糾錯閾值或者沒有達到糾錯碼的糾錯閾值,在本發(fā)明技術方案的實施例中,采用不同的辦法進行處理?,F有技術中的垃圾回收和臟塊清除,采用的方法是將臟塊中的有效數據先讀回閃存中的控制器,然后將其從控制器中取出送入編碼器進行糾錯碼編碼,將進行了再編碼的有效數據再送入控制器,然后再寫入閃存。如圖2所示。針對是否達到糾錯碼的糾錯閾值,對有效數據的回收采用不同的方式,簡單來說就是對未達到糾錯碼糾錯閾值的有效數據,將該有效數據通過寄存器直接寫入閃存中;對已達到糾錯碼糾錯閾值的有效數據,先將該有效數據讀回控制器,再寫入閃存中。

(4)執(zhí)行copy-back命令,通過閃存分組內的寄存器進行數據遷移。copy-back命令是固態(tài)盤系統提供的一種高級命令,支持同一個分組(plane)內不同數據塊之間的數據,通過分組內的寄存器完成數據遷移。對于錯誤沒有達到糾錯碼糾錯閾值的有效數據,本發(fā)明技術方案的方法中,將其從待清除的臟塊中直接寫入寄存器,然后通過寄存器直接寫入閃存中的其他空白區(qū)。因為寄存器本身就位于閃存中,因此對于錯誤沒有達到糾錯碼糾錯閾值的有效數據,在閃存中就可以完成有效數據的轉移,不需要將其讀出再存入,有效的提高了臟塊中與小數據的回收效率,優(yōu)化了整個垃圾回收過程,更進一步地,優(yōu)化了閃存的存儲系統。

(5)判斷有效數據遷移是否結束,若結束,轉(11),否則,轉(2)。在利用copy-back進行數據遷移的過程中,需要隨時進行檢測。檢測臟塊內利用copy-back進行數據遷移的的有效數據遷移是否完成,如果沒有完成,則繼續(xù)進行數據遷移,直到利用copy-back進行數據遷移的的有效數據遷移全部完成。這部分有效數據屬于所有遷移的有效數據的一部分,如果臟塊內的有效數據已經全部遷移完成,垃圾回收過程中的回收部分才算完成,才可以進行下一步的臟塊擦除工作。

(6)將臟塊中的有效數據讀回控制器的數據buffer中。本發(fā)明技術方案中,對錯誤達到了糾錯碼糾錯閾值的有效數據,按照上述方法進行回收。因為這部分有效數據的錯誤已經達到了糾錯碼的糾錯閾值,為了保證有效數據的準確性,需要對其進行再編碼??刂破鞯腷uffer是位于閃存外的一個數據緩存結構,待回收的有效數據需要先進入控制器buffer,然后從buffer中取出,進入編碼器再編碼。經過再編碼的有效數據,原路返回到控制器buffer中,此時有效數據的糾錯碼經過了再編碼,其錯誤處于糾錯碼的更正范圍內,將該有效數據寫入閃存的空白頁即可。

(7)對數據進行糾錯碼(ecc)編碼。對于錯誤達到了其糾錯碼糾錯閾值的有效數據,如果直接將其存入閃存,很顯然錯誤率的累積會導致整個系統中有效數據的準確性降低,因此需要對其進行糾錯碼再編碼過程。再編碼的過程,就是為了降低錯誤率,使得有效數據中的錯誤數量小于糾錯碼的糾錯閾值,優(yōu)化有效數據的自我糾錯能力。

(8)編碼后將數據送回控制器的buffer中。經過糾錯碼再編碼的有效數據,通過原路返回到控制器buffer,再從控制器buffer寫入閃存的空白頁區(qū),最終完成有效數據的回收工作。

(9)判斷臟塊中有效數據收集到buffer是否全部完成,若完成,轉(10),否則,轉(6)。對于待回收臟塊中的有效數據,需要明確以下幾點。第一,臟塊中的有效數據回收是分多次進行的,每次回收其中的一部分。第二,針對當前回收的數據,需要對其進行糾錯碼糾錯閾值檢測后選擇不同的方式進行回收。第三,在一次數據回收完成后,需要對臟塊中剩余部分進行檢測,以確認整個臟塊中的有效數據回收是否完成。本發(fā)明技術方案的實施例中優(yōu)選將臟塊中的有效數據全部篩選完畢后,針對錯誤達到糾錯碼閾值的有效數據,經過再編碼后先集中存儲在控制器buffer中,再批量寫入閃存的空白頁區(qū)。在本發(fā)明技術方案的另一個優(yōu)選實施例中,也可以將控制器buffer收集到的數據分別寫入閃存的空白頁區(qū)。

(10)將收集的有效數據寫入閃存中另外的空閑塊。閃存中存在大量的數據,對于從臟塊中回收的有效數據,將其寫入一個空閑頁區(qū)。

(11)垃圾回收所有有效數據遷移完成,將臟塊擦除。經過本發(fā)明技術方案實施例的上述步驟,臟塊中的有效數據回收完成,可以將臟塊擦除。

(12)本次垃圾回收完成。

本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1