專利名稱:一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法
技術領域:
本發(fā)明涉及計算機技術領域,尤其涉及基于固態(tài)硬盤的數(shù)據(jù)寫入的方法。
背景技術:
在傳統(tǒng)的基于磁介質的的機械硬盤中,讀寫的機械操作速度成為了系統(tǒng) IOPS(Input/Output Operations Per Second,即每秒進行讀寫I/O操作的次數(shù))的重大瓶頸。于是利用Flash(閃存)和DRAM的固態(tài)硬盤技術應運而生。固態(tài)硬盤具有速度快、能耗低、抗震動等優(yōu)點。傳統(tǒng)磁盤的磁頭可以針對每一個Byte (字節(jié))的磁介質進行加磁或者消磁操作, 所以傳統(tǒng)磁盤的操作粒度是一個Byte。Flash有著特殊的性質,如果要向某個Block (塊)寫入數(shù)據(jù),必須先擦除(Erase) 整個Block(塊)為全1,然后才能向Block中寫入新數(shù)據(jù)。即使僅僅為了修改一個頁(page) 或者一個字節(jié)(Byte)的信息也需要進行同樣的操作。為了使得改動后的Block中其他的數(shù)據(jù)不變,需要先將Block中的數(shù)據(jù)存入緩存中,然后根據(jù)需要改動緩存中的相應數(shù)據(jù)。然后將該Block進行Erase,然后再將緩存中的數(shù)據(jù)寫入Block,完成整個數(shù)據(jù)的修改工作。這種額外的Erase (擦除)操作大大增加了覆蓋寫的開銷。Flash的基礎原理是采用浮動門場效應電路實現(xiàn)對電子的捕獲,從而產(chǎn)生的充放電狀態(tài)的不同來表示信息。隨著TO(浮動門)充放電次數(shù)的增多(SLC JPSingle Layer Cell單層單元為100,000次,MLC即Multi-Level Cell多層單元為10,000次),二氧化硅絕緣層的絕緣能力將遭到損耗,最后逐漸失去絕緣性,無法保證re中保有足夠的電荷。此時,這個Cell (單元)就被宣判為損壞。當一個I^age中的Cell損壞數(shù)量超過ECC碼(糾錯碼)可以檢驗和糾錯的范圍, 該I^age就視為壞頁。因此,業(yè)界迫切需要一種在flash固態(tài)硬盤中增加page和cell使用壽命的方法。
發(fā)明內容
本發(fā)明就是為了解決上述問題,克服現(xiàn)有技術中cell和page易損壞的缺陷,提供一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法。本發(fā)明的技術方案如下一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,包括如下步驟601 在沒有文件系統(tǒng)的存入指令時,根據(jù)主機時鐘頻率算法進行計算得到優(yōu)化觸發(fā)點,并執(zhí)行優(yōu)化程序;602:在有文件系統(tǒng)的存入指令時,先將輸入的數(shù)據(jù)存入緩存,然后對寫入數(shù)據(jù)進行預處理與寫入優(yōu)化,再執(zhí)行寫入;603 文件系統(tǒng)啟動后,關鍵有效數(shù)據(jù)頁記錄從固態(tài)硬盤閃存芯片讀取到緩沖區(qū);604 當固態(tài)硬盤中已經(jīng)沒有可用的自由空間時,重定向塊地址表設置為空;
605 計算重寫率,如果超過重寫率的閾值,就在該塊上進行寫入;606 將該塊進行擦除,然后,再將緩存中的數(shù)據(jù)再次寫入該塊;607 重新計算本塊的使用率,并重新插入到使用率表中新的位置;608:在接到文件系統(tǒng)發(fā)出的特殊清楚指令后,掃描整個固態(tài)硬盤,將那些文件系統(tǒng)垃圾所在的塊找出來,進行擦除;609 將擦除好的塊地址放入重定向塊地址表中,作為自由空間待用。上述一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其中,還包含重復執(zhí)行該步驟601至609。上述一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其中,所述重復執(zhí)行是利用計算機的時鐘周期作為觸發(fā)的條件自動執(zhí)行。上述一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其中,所述重復執(zhí)行是采用工具軟件,用手動的方式執(zhí)行。上述一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其中,所述步驟606還包含將最佳可用塊地址壓棧。本發(fā)明的有益效果是對固態(tài)硬盤的數(shù)據(jù)寫入進行優(yōu)化,降低了重復寫的過程,延長了整個固態(tài)硬盤的壽命。
下面結合附圖和具體實施方式
來詳細說明本發(fā)明圖1是固態(tài)硬盤中Page,Block和Flash的邏輯關系示意圖;圖2是固態(tài)硬盤的結構和控制器及緩存的示意圖;圖3是固態(tài)硬盤中Flash的Cell的結構示意圖;圖4是本發(fā)明緩存中的重定向表的數(shù)據(jù)結構示意圖;圖5是數(shù)據(jù)存儲時重定向獲取當前可用LBA的邏輯圖;圖6是本發(fā)明在固態(tài)硬盤中重定向寫入及垃圾回收的方法流程圖。
具體實施例方式為了使本發(fā)明實現(xiàn)的技術手段、創(chuàng)作特征、達成目的與功效易于明白了解,下面結合具體圖示,進一步闡述本發(fā)明。圖1表示了固態(tài)硬盤I^age,Block和Flash固態(tài)硬盤的邏輯關系示意圖。在 flash(閃存)固態(tài)硬盤初始化過程中,會按照硬盤的大小、按照比例劃分出一塊系統(tǒng)空間, 用于存放重定向塊地址表,其他空間作為數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū)由好多個塊(block) 101構成,每個塊由多個頁(page) 102構成,不同大小的塊(Block)擁有不同數(shù)量的I^age。例如,一個Block可以由1 個I^age組成。每個I^age 有4314個比特的單元(CELL),其中4096個比特的cell為數(shù)據(jù)區(qū)103,218比特的cell為 ECC 碼區(qū) 104。上述大小都會作為參數(shù)在本發(fā)明計算重定向塊地址表的時候予以計算。圖2示意性的顯示了固態(tài)硬盤的結構。固態(tài)硬盤(SSD,solid state disk) 200是用固態(tài)電子存儲芯片陣列制成的硬盤,由系統(tǒng)區(qū)201和數(shù)據(jù)區(qū)202兩部分組成。本發(fā)明的
4數(shù)據(jù)區(qū)202為一至多個flash芯片,負責存儲數(shù)據(jù)。系統(tǒng)區(qū)201負責讀取、寫入數(shù)據(jù)。控制單元201包含中央處理器(CPU) 203、與CPU203相連的控制器204、與控制器204緩沖區(qū) (Buffer) 205,與 Buffer205 相連的 IF206 和 MF207。在固態(tài)硬盤控制器204中具有邏輯模塊,保證硬盤中的系統(tǒng)區(qū)201和數(shù)據(jù)區(qū)202 之間不會互相干擾和覆蓋。緩沖區(qū)(Buffer) 205與固態(tài)硬盤控制器204相連。中央處理器(CPU) 203與控制器204相連。緩沖區(qū)(Buffer)205是在固態(tài)硬盤的初始化過程中,留出的一部分空間,作為系統(tǒng)自留的緩沖數(shù)據(jù)區(qū)。該塊區(qū)域在客戶界面無法看到,可以在硬盤出現(xiàn)存滿等臨界點時,為系統(tǒng)的數(shù)據(jù)騰挪提供空間。該空間一般為系統(tǒng)硬盤容量的10% 20%。系統(tǒng)區(qū)201中的數(shù)據(jù)只有固態(tài)硬盤控制器204能讀取和寫入,系統(tǒng)軟件和應用軟件都無法直接讀寫。在本發(fā)明地其中一個實施例中,在固態(tài)硬盤的驅動程序中開放應用程序接口 API 來對系統(tǒng)數(shù)據(jù)進行操作。本發(fā)明在固態(tài)硬盤控制器204中固化本發(fā)明的算法程序,執(zhí)行本發(fā)明在固態(tài)硬盤中重定向寫入及垃圾回收的方法。圖3是固態(tài)硬盤中Flash的Cell的結構示意圖。頁101和頁103為未選中的頁, 其電壓為5伏特(V)。頁102為選中的頁,其電壓值為0伏特。在未選中的頁101和103 中,cell的狀態(tài)為受壓狀態(tài)。圖4是本發(fā)明緩存中的重定向表的數(shù)據(jù)結構示意圖;重定向表的數(shù)據(jù)結構為 no.,邏輯塊地址LBA,F(xiàn)LASH地址和bolck地址。圖5是本發(fā)明數(shù)據(jù)存儲時重定向獲取當前可用LBA的邏輯圖。在文件系統(tǒng) 501(datablock)需要存儲數(shù)據(jù)時,由自由空間尋找(Free Space Seeking)的算法邏輯502 取得當前可用的LBA(Logic Block Address),并返回給固態(tài)硬盤控制器204執(zhí)行。首個可用邏輯塊地址503 (First Available LBA)作為普通寫入模塊的寫入塊的參數(shù)。圖6為本發(fā)明在固態(tài)硬盤中重定向寫入及垃圾回收的方法流程圖。601 在沒有文件系統(tǒng)的存入指令時,根據(jù)主機時鐘頻率算法,控制器204中的本發(fā)明方法進行計算,得出優(yōu)化觸發(fā)點,并執(zhí)行優(yōu)化程序。使得固態(tài)硬盤具有更多的自由空間 (FreeSpace)的 Page 可用。602 在文件系統(tǒng)向SSD發(fā)送存入指令的時候,固態(tài)硬盤控制器先將輸入存入緩存,然后對寫入數(shù)據(jù)進行預處理與寫入優(yōu)化,再執(zhí)行寫入。603 文件系統(tǒng)啟動后,關鍵有效數(shù)據(jù)I^ge記錄從固態(tài)硬盤flash芯片202讀取到緩沖區(qū)205。604 當固態(tài)硬盤中已經(jīng)沒有可用的自由空間(Free Space)時,重定向塊地址表將為空。系統(tǒng)在此時會對硬盤進行一次掃描,計算出每個Block的使用率,并進行排序,并將排序結果放入數(shù)據(jù)塊使用率表。605:根據(jù)當前寫入的數(shù)據(jù)同現(xiàn)有Block中未使用I^ge的數(shù)據(jù)進行運算,得出一個重寫率。也就是在一次重寫后,是否能夠盡可能的寫滿整個Block。如果超過重寫率的閾值,就在該Block上進行寫入。重寫過程是先將該Block中的所有數(shù)據(jù)都讀入緩存,然后在緩存中進行寫操作。606 在寫入執(zhí)行完后,將該Block進行擦除Erase。然后,再將緩存中的數(shù)據(jù)再次寫入該Block中。607 在完成重寫后,重新計算本Block的使用率,并重新插入到使用率表中新的位置。為了便于確定使用率的大小,本發(fā)明的方法在步驟606還包含了一個最佳可用的塊地址棧。每次將最佳可用塊地址壓棧。在使用的時候,退棧就可以獲得。608 在接到文件系統(tǒng)發(fā)出的特殊清楚指令后,本發(fā)明的方法還掃描整個固態(tài)硬盤。將那些文件系統(tǒng)垃圾所在的Block找出來,并先行進行擦除(Erase)。609 在擦除后,將清楚好的塊地址放入重定向塊地址表中,作為Free Space待用。重復步驟601至609。利用計算機的時鐘周期作為觸發(fā)的條件,在一定周期后就自動執(zhí)行一次。在適當?shù)臅r候也可以采用工具軟件,用手動的方式來進行清理。通過對本發(fā)明的描述可見,本發(fā)明對固態(tài)硬盤的數(shù)據(jù)寫入進行優(yōu)化,降低了重復寫的過程,延長了整個固態(tài)硬盤的壽命。以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點。本行業(yè)的技術人員應該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會有各種變化和改進,這些變化和改進都落入要求保護的本發(fā)明范圍內。本發(fā)明要求保護范圍由所附的權利要求書及其等同物界定。
權利要求
1.一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,包括如下步驟601在沒有文件系統(tǒng)的存入指令時,根據(jù)主機時鐘頻率算法進行計算得到優(yōu)化觸發(fā)點,并執(zhí)行優(yōu)化程序;602在有文件系統(tǒng)的存入指令時,先將輸入的數(shù)據(jù)存入緩存,然后對寫入數(shù)據(jù)進行預處理與寫入優(yōu)化,再執(zhí)行寫入;603文件系統(tǒng)啟動后,關鍵有效數(shù)據(jù)頁記錄從固態(tài)硬盤閃存芯片讀取到緩沖區(qū);604當固態(tài)硬盤中已經(jīng)沒有可用的自由空間時,重定向塊地址表設置為空;605計算重寫率,如果超過重寫率的閾值,就在該塊上進行寫入;606將該塊進行擦除,然后,再將緩存中的數(shù)據(jù)再次寫入該塊;607重新計算本塊的使用率,并重新插入到使用率表中新的位置;608在接到文件系統(tǒng)發(fā)出的特殊清楚指令后,掃描整個固態(tài)硬盤,將那些文件系統(tǒng)垃圾所在的塊找出來,進行擦除;609將擦除好的塊地址放入重定向塊地址表中,作為自由空間待用。
2.根據(jù)權利要求1所述的一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,還包含重復執(zhí)行該步驟601至609。
3.根據(jù)權利要求2所述的一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,所述重復執(zhí)行是利用計算機的時鐘周期作為觸發(fā)的條件自動執(zhí)行。
4.根據(jù)權利要求2所述的一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,所述重復執(zhí)行是采用工具軟件,用手動的方式執(zhí)行。
5.根據(jù)權利要求1所述的一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,其特征在于,所述步驟606還包含將最佳可用塊地址壓棧。
全文摘要
本發(fā)明涉及計算機技術領域,為一種在固態(tài)硬盤中重定向寫入及垃圾回收的方法,包括計算得到優(yōu)化觸發(fā)點,并執(zhí)行優(yōu)化程序;將輸入的數(shù)據(jù)存入緩存,對寫入數(shù)據(jù)進行預處理與寫入優(yōu)化,執(zhí)行寫入;關鍵有效數(shù)據(jù)頁記錄從固態(tài)硬盤閃存芯片讀取到緩沖區(qū);重定向塊地址表設置為空;計算重寫率,如果超過閾值,就在該塊上寫入;將該塊擦除,將緩存中的數(shù)據(jù)再次寫入該塊;重新計算該塊的使用率,重新插入到使用率表中新的位置;在接到文件系統(tǒng)發(fā)出的特殊清楚指令后,將文件系統(tǒng)垃圾所在的塊找出來,進行擦除;將擦除好的塊地址放入重定向塊地址表中。本發(fā)明對固態(tài)硬盤的數(shù)據(jù)寫入進行優(yōu)化,降低了重復寫的過程,延長了整個固態(tài)硬盤的壽命。
文檔編號G06F12/08GK102279809SQ20111022875
公開日2011年12月14日 申請日期2011年8月10日 優(yōu)先權日2011年8月10日
發(fā)明者郟惠忠 申請人:郟惠忠