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