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

帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層及實現(xiàn)方法

文檔序號:6607755閱讀:291來源:國知局

專利名稱::帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層及實現(xiàn)方法
技術(shù)領(lǐng)域
:本發(fā)明涉及閃存固態(tài)盤中一種具有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層FTL(FlashTranslationLayer)的設(shè)計和實現(xiàn)方法。
背景技術(shù)
:閃存(FlashMemory)是近年來應(yīng)用廣泛的一種半導(dǎo)體存儲器,閃存技術(shù)的發(fā)展引起了存儲領(lǐng)域新的變革。閃存體積小、重量輕、無噪聲、抗震動,其能耗只有傳統(tǒng)硬盤的1/51/6,是一種理想的存儲介質(zhì)。閃存的一個重要特性就是修改數(shù)據(jù)時不能作覆蓋寫(over-write),也即當(dāng)一頁數(shù)據(jù)需要修改時,不能像磁盤那樣直接在原地作修改,而需要將該頁擦除后再重新寫入數(shù)據(jù)。由于擦除操作延遲較大,一般將新的數(shù)據(jù)寫到另一個空白頁上,同時讓原數(shù)據(jù)失效,這就是常說的非定點更新(out-placeupdate),這一特性使得傳統(tǒng)磁盤上的文件系統(tǒng)不能直接應(yīng)用到閃存設(shè)備上。為充分利用傳統(tǒng)磁盤領(lǐng)域積累的技術(shù)和大量軟件產(chǎn)品,各大廠商紛紛將一個或多個閃存芯片組合封裝成類似磁盤的固態(tài)盤SSD(SolidStateDrive),為上層應(yīng)用提供與磁盤一樣的接口,而不需要修改應(yīng)用和文件系統(tǒng)。閃存固態(tài)盤采用一個轉(zhuǎn)換層FTL(FlashTranslationLayer)將閃存模擬成磁盤設(shè)備。FTL主要完成以下幾項功能地址映射、損耗均衡、垃圾回收,其中地址映射實現(xiàn)了閃存地址空間到磁盤地址空間的轉(zhuǎn)換,損耗均衡和垃圾回收在保證各閃存塊擦除次數(shù)均衡的前提下對失效閃存塊進行回收。在小量隨機訪問情況下,閃存的寫性能是一個瓶頸。同時,閃存中每一塊被擦除的次數(shù)有限,約為1萬次10萬次。當(dāng)閃存芯片中某一塊的被擦除次數(shù)臨近閃存有限的擦除次數(shù)導(dǎo)致閃存固態(tài)盤的使用壽命遠不能滿足用戶的需求?,F(xiàn)有的FTL中的損耗均衡功能雖然可以均衡各個閃存塊的擦寫次數(shù),但并不能減少對閃存的總擦寫次數(shù),而在FTL中采用數(shù)據(jù)壓縮技術(shù)可以減少每次實際寫入閃存的數(shù)據(jù)總量,從而提高其讀寫性能,同時由于減少對閃存的實際擦除次數(shù),相應(yīng)地延長了閃存固態(tài)盤的使用壽命。目前,數(shù)據(jù)壓縮技術(shù)有部分直接應(yīng)用于嵌入式閃存芯片中,而將數(shù)據(jù)壓縮技術(shù)引入閃存固態(tài)盤的轉(zhuǎn)換層(FTL)中,利用壓縮技術(shù)對閃存固態(tài)盤的性能和壽命進行優(yōu)化的方法在國內(nèi)外尚無公開出版的技術(shù)資料。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是,針對閃存固態(tài)盤隨機寫性能較差和使用壽命有限的問題,將數(shù)據(jù)壓縮技術(shù)引入閃存固態(tài)盤的設(shè)計中,實現(xiàn)一個帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層。在保證正確的地址映射、損耗均衡和垃圾回收功能的情況下,利用數(shù)據(jù)壓縮技術(shù)對讀/寫數(shù)據(jù)進行解/壓縮,提高閃存固態(tài)盤的整體讀寫性能,并有效延長其使用壽命。本發(fā)明的技術(shù)方案是在實現(xiàn)地址映射、損耗均衡和垃圾回收功能的FTL中,加入壓縮和解壓縮模塊。帶有數(shù)據(jù)壓縮功能的FTL主要由壓縮器Compressor、解壓器Decompressor、緩沖區(qū)Buffer、地址映射管理模塊、垃圾回收模塊和損耗均衡模塊組成。Compressor將主機發(fā)出的待寫數(shù)據(jù)進行壓縮后寫入Buffer;Decompressor將從Buffer或閃存中讀出的數(shù)據(jù)解壓縮后返回給主機;Buffer接收Compressor送來的壓縮數(shù)據(jù)并拼接成若干完整的閃存數(shù)據(jù)頁;地址映射管理模塊負(fù)責(zé)整個讀寫過程中的地址映射關(guān)系的正確無誤;垃圾回收模塊負(fù)責(zé)對失效閃存塊進行回收;損耗均衡模塊負(fù)責(zé)均衡對各個閃存塊的擦寫次數(shù)。本發(fā)明中對寫入數(shù)據(jù)的壓縮和讀出數(shù)據(jù)的解壓縮采用了基于LZ77算法的單頁壓縮策略。單頁壓縮方案中對于要寫入閃存的數(shù)據(jù),以一頁為單位進行壓縮,主機發(fā)出一個寫操作就進行一次壓縮,將壓縮后的數(shù)據(jù)放在緩存中,當(dāng)緩存中剩余的空間不夠再放入壓縮數(shù)據(jù)時,將幾次寫操作的壓縮數(shù)據(jù)在緩存中拼接成若干個完整的閃存數(shù)據(jù)頁,寫入閃存;讀數(shù)據(jù)時,因為待讀取數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù)在閃存中要么分布在一個物理頁上,要么分布在兩個物理頁上,所以至多只需讀出兩個閃存物理頁,提取相應(yīng)壓縮數(shù)據(jù),進行解壓縮操作,即得到要讀取的數(shù)據(jù)。與多頁壓縮方案相比,單頁壓縮方案具有讀延時較小、寫更新處理流程簡單、空間利用率高等優(yōu)點,可以有效提高整個系統(tǒng)的性能。而針對單頁壓縮策略的壓縮率稍低的缺點,本發(fā)明中采用了對小文件壓縮性能較好的LZ77壓縮算法來彌補。與普通的不帶數(shù)據(jù)壓縮功能的FTL相比,本發(fā)明的FTL中的地址映射管理模塊不同之處在于,多個邏輯地址上的數(shù)據(jù)在經(jīng)過數(shù)據(jù)壓縮并進行拼接之后可能會被寫入同一個閃存物理頁上,也可能一個邏輯地址上的數(shù)據(jù)在壓縮并和其他壓縮數(shù)據(jù)進行拼接后被分兩成部分寫在兩個物理頁上,即多個邏輯地址可能對應(yīng)一個物理地址,而一個邏輯地址也可能對應(yīng)兩個物理地址。本發(fā)明中提出了一種基于單頁壓縮策略的地址映射方案。主機邏輯地址和閃存物理地址之間的地址映射有兩種基本方案塊映射和頁映射。在塊映射中,邏輯地址由邏輯塊地址和塊內(nèi)偏移組成,在進行地址映射時,只有邏輯塊地址被轉(zhuǎn)換成物理塊地址,而塊內(nèi)偏移是不變的,這就要求邏輯地址上的數(shù)據(jù)在物理塊中的塊內(nèi)偏移和邏輯塊內(nèi)偏移是相同的。相比之下,頁映射方案可以提供更加靈活地數(shù)據(jù)管理,因為一個邏輯數(shù)據(jù)頁可以被映射到任何一個閃存物理頁,而沒有塊內(nèi)偏移的限制。當(dāng)有寫操作時,只需將數(shù)據(jù)寫在當(dāng)前空閑的物理頁上即可,如果是寫更新,還需要將舊版本數(shù)據(jù)所在的物理頁置為失效。當(dāng)空閑塊數(shù)目達到一定閾值時,根據(jù)損耗均衡策略,找到要被擦除的塊,將其上的有效數(shù)據(jù)頁寫入到空閑物理頁上,然后將該塊擦除以供重新使用。在采用單頁壓縮策略時,采用頁映射方案更為合適。對閃存而言,連續(xù)讀寫性能要大大優(yōu)于隨機讀寫性能,為了使啟用的數(shù)據(jù)壓縮的FTL仍能保持較高的性能,應(yīng)充分利用閃存連續(xù)讀寫性能好的特性,塊映射方案難以滿足這一要求,因為它可能造成兩個連續(xù)的數(shù)據(jù)頁分別分布在某一物理塊和它對應(yīng)的替代塊上,這破壞了讀取數(shù)據(jù)的連續(xù)性,將帶來額外的延時開銷。而在加入了壓縮功能之后,這種破壞會更加嚴(yán)重,因為一個數(shù)據(jù)頁經(jīng)過壓縮并進行拼接之后可能分布在兩個物理頁上,此時若這兩個物理頁在兩個物理塊上,則除了連續(xù)讀取不在同一物理塊上的多頁的延時外,又加大了讀取單個數(shù)據(jù)頁的延時。所以,本發(fā)明采用基于單頁壓縮策略的頁映射方案,將主機發(fā)出的邏輯地址映射到閃存物理頁地址、數(shù)據(jù)在物理頁上的起始位置以及長度,即可以用元組物理頁地址1,起始位置1,長度1,或物理頁地址1,物理頁地址2,起始位置1,起始位置2,長度1,長度2,來表示一條邏輯地址與物理地址的映射關(guān)系。在帶有數(shù)據(jù)壓縮功能的FTL中,使用了以下幾個重要的數(shù)據(jù)結(jié)構(gòu)Ubuffer_next指向Buffer中下一個空白位置;2,BoF下標(biāo)為邏輯地址,表項值為O標(biāo)識該邏輯地址對應(yīng)的數(shù)據(jù)是在Buffer中,為1標(biāo)識該邏輯地址對應(yīng)的數(shù)據(jù)在閃存中,為-1表示該邏輯地址還未進行寫入操作。表項個數(shù)為閃存的總頁數(shù)。3、sltable每個表項有三個字段LogicAddress標(biāo)識該表項指向的Buffer中一段壓縮數(shù)據(jù)所對應(yīng)的邏輯地址;startpos標(biāo)識這一段壓縮數(shù)據(jù)在Buffer中的起始位置;length這一段壓縮數(shù)據(jù)的長度;表項個數(shù)為閃存的總頁數(shù)。4、sltable_next指向sltable下一個可用的表項。5、Ittable下標(biāo)為邏輯地址,每個表項有四個字段tag標(biāo)識該表項邏輯地址對應(yīng)的壓縮數(shù)據(jù)在閃存物理頁上的分布,值為1表示在一個物理頁內(nèi),為2表示跨兩個物理頁;ρ[2]為閃存物理頁地址結(jié)構(gòu)體數(shù)組,標(biāo)識該表項邏輯地址對應(yīng)的壓縮數(shù)據(jù)存儲在閃存中的物理頁地址,視tag的值為ρ有效或p和p[l]有效;offset[2]數(shù)組,視tag的值表示壓縮數(shù)據(jù)在1個或2個閃存物理頁上的起始位置;length[2]數(shù)組,視tag的值表示壓縮數(shù)據(jù)在1個或2個閃存物理頁上的長度;表項個數(shù)為閃存的總頁數(shù)。6、isvalid因為一個閃存物理頁上可能包含多段壓縮數(shù)據(jù),所以只有當(dāng)這些壓縮數(shù)據(jù)段全部失效時該物理頁才能被置為失效,每一個表項代表一個閃存物理頁上當(dāng)前有效地壓縮數(shù)據(jù)段數(shù),當(dāng)其減少到0時,該物理頁可被置為無效。表項個數(shù)為閃存的總頁數(shù)。本發(fā)明的帶有數(shù)據(jù)壓縮功能的FTL的具體實現(xiàn)和讀寫過程詳見。使用本發(fā)明能達到以下有益效果1.針對閃存固態(tài)盤隨機寫性能較差的問題,利用數(shù)據(jù)壓縮技術(shù)對讀/寫數(shù)據(jù)進行解/壓縮,并在FTL中實現(xiàn)了一個軟buffer,減少了每次實際寫入和讀出閃存固態(tài)盤的數(shù)據(jù)量,從而提高閃存固態(tài)盤的整體讀寫性能。2.針對閃存固態(tài)盤使用壽命有限的問題,將數(shù)據(jù)壓縮技術(shù)引入閃存固態(tài)盤的設(shè)計中,由于減少了每次實際寫入的數(shù)據(jù)量,相應(yīng)地減少了對閃存的實際擦寫次數(shù),從而可以有效延長其使用壽命。圖1是本發(fā)明實現(xiàn)的帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層總體結(jié)構(gòu)圖;圖2是本發(fā)明提出的一種基于單頁壓縮策略的頁映射方案;圖3是本發(fā)明在讀取壓縮數(shù)據(jù)時的示意圖;圖4是本發(fā)明在壓縮要寫入數(shù)據(jù)的示意圖;圖5是本發(fā)明在將壓縮數(shù)據(jù)寫入Buffer時的示意圖;圖6是本發(fā)明在將Buffer中數(shù)據(jù)寫入閃存的示意圖;圖7是本發(fā)明帶有數(shù)據(jù)壓縮功能的FTL對不同類型文件的平均壓縮率對比示意6圖;圖8是采用帶有數(shù)據(jù)壓縮功能的FTL和不帶數(shù)據(jù)壓縮功能的FTL相比,對于不同類型文件,閃存固態(tài)盤平均讀/寫延時降低比例的示意圖。具體實施例方式以下結(jié)合附圖對本發(fā)明做進一步詳細(xì)說明。如圖1所示,帶有數(shù)據(jù)壓縮功能的FTL主要由壓縮器Compressor、解壓器Decompressor、緩沖區(qū)Buffer、地址映射管理模塊、垃圾回收模塊和損耗均衡模塊組成。Compressor將主機發(fā)出的待寫數(shù)據(jù)進行壓縮后寫入Buffer;Decompressor將從Buffer或閃存中讀出的數(shù)據(jù)解壓縮后返回給主機;Buffer接收Compressor送來的壓縮數(shù)據(jù)并拼接成若干完整的閃存數(shù)據(jù)頁;地址映射管理模塊負(fù)責(zé)整個讀寫過程中的地址映射關(guān)系的正確無誤;垃圾回收模塊負(fù)責(zé)對失效閃存塊進行回收;損耗均衡模塊負(fù)責(zé)均衡對各個閃存塊的擦寫次數(shù)。如圖2所示,在本發(fā)明的單頁壓縮策略的頁映射方案下,假設(shè)主機有4塊數(shù)據(jù)A、B、C、D要寫入閃存,這四塊數(shù)據(jù)的邏輯地址分別為12、25、34、46,大小均為512Bytes,經(jīng)過壓縮以后得到A'、B'、C'、D',其中A'大小為308Bytes,B'大小為296Bytes,C'大小為300Bytes,D'大小為316Bytes,則Buffer中經(jīng)過拼接之后形成3個數(shù)據(jù)頁,將這三個數(shù)據(jù)頁寫入閃存中,其中則A'、C'分布在一個閃存物理頁上,B'、D'分布在兩個物理頁上,用元組(6,0,308)表示數(shù)據(jù)A的地址映射關(guān)系,用元組(6,7,308,0,204,92)表示數(shù)據(jù)B的地址映射關(guān)系,用元組(7,92,300)表示數(shù)據(jù)C的地址映射關(guān)系,用元組(7,8,392,0,220,96)來表示數(shù)據(jù)D的地址映射關(guān)系,將這四個元組寫入地址映射表的第12、25、34、46項。當(dāng)主機要讀出邏輯地址12上的數(shù)據(jù)A時,找到地址映射表的第12項(6,0,308),讀出物理頁地址為6的閃存頁,從位置0開始,連續(xù)讀出308個字節(jié)的數(shù)據(jù)(即A'),然后進行解壓縮即得到主機要讀取的數(shù)據(jù)A。圖3是從閃存中讀出壓縮數(shù)據(jù)的示意圖,包括五個主要步驟1)主機發(fā)出要讀取的數(shù)據(jù)的邏輯地址LogicAddress=LAi;2)以該邏輯地址為下標(biāo),查詢BoF表,即根據(jù)BoF[LAi]的值,確定要讀取的數(shù)據(jù)是在Buffer中還是在閃存中;3)若要讀取的數(shù)據(jù)在Buffer中,則順序查找sltable表,找到相應(yīng)的表項,該表項的LogicAddress字段等于主機發(fā)出的邏輯地址LAi;然后根據(jù)該表項的startpos和length字段,從Buffer的startpos位置開始,連續(xù)讀取length字節(jié)的數(shù)據(jù),這段數(shù)據(jù)即為主機要讀取的數(shù)據(jù)所對應(yīng)的壓縮數(shù)據(jù);4)若要讀取的數(shù)據(jù)在閃存中,則以該邏輯地址為下標(biāo),查詢Ittable表,若lttable[LAi]->tag=1,則主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù)在一個閃存物理頁上,將地址為lttable[LAi]->p的物理頁讀出,根據(jù)lttable[LAi]->offset和lttable[LAi]->length的值,從讀出的物理頁中提取主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù);若lttable[LAi]->tag=2,則按照前述方法讀出兩段壓縮數(shù)據(jù)拼接起來即為主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù);5)將讀出的壓縮數(shù)據(jù)解壓,返回給主機。圖4、圖5和圖6是將數(shù)據(jù)寫入閃存的示意圖(壓縮待寫入的數(shù)據(jù)、將壓縮數(shù)據(jù)寫入Buffer、將Buffer中數(shù)據(jù)寫入閃存),主要包括六個步驟1)主機發(fā)出要寫入的數(shù)據(jù)以及它的邏輯地址LogicAddress=LAi;2)將要寫入的數(shù)據(jù)進行壓縮,得到壓縮后數(shù)據(jù)長度destlen;3)以該邏輯地址為下標(biāo),查詢BoF表,即根據(jù)BoF[LAi]的值,確定邏輯地址LogicAddress是第一次被寫入還是寫更新。寫更新分為兩種情況要更新的數(shù)據(jù)在Buffer中和在閃存中;4)若是第一次被寫入,若是Buffer中剩余的空間大于等于壓縮后的數(shù)據(jù)大小,根據(jù)buffer_neXt的值,則將壓縮后的數(shù)據(jù)寫入Buffer,然后根據(jù)sltablejext找到sltable中下一個可用的表項,登記相應(yīng)信息;若是Buffer中剩余的空間小于壓縮后的數(shù)據(jù)大小,則先將Buffer中的數(shù)據(jù)全部寫入閃存中,并在Ittable中登記相應(yīng)信息,然后再將壓縮數(shù)據(jù)寫入Buffer中并在sltable中登記相應(yīng)信息;5)若是寫更新且要更新的數(shù)據(jù)在閃存中,則首先按照步驟4進行操作,最后更新isvalid表,將原來壓縮數(shù)據(jù)對應(yīng)的物理頁上的有效壓縮數(shù)據(jù)段數(shù)減1;6)若是寫更新且要更新的數(shù)據(jù)在Buffer中,若是Buffer中剩余的空間大于等于壓縮后的數(shù)據(jù)大小,根據(jù)buffer_next的值,先將壓縮數(shù)據(jù)寫入Buffer中,然后調(diào)整Buffer內(nèi)容,將LAi原來對應(yīng)的壓縮數(shù)據(jù)覆蓋,并調(diào)整sltable中的相應(yīng)表項;若是Buffer中剩余的空間小于壓縮后的數(shù)據(jù)大小,則先將Buffer中的數(shù)據(jù)寫入閃存中,并在Ittable中登記相應(yīng)信息,然后將壓縮數(shù)據(jù)寫入Buffer中并在sltable中登記相應(yīng)信息,最后更新isvalid表,將原壓縮數(shù)據(jù)對應(yīng)的物理頁上的有效壓縮數(shù)據(jù)段數(shù)減1。圖7是本發(fā)明帶有數(shù)據(jù)壓縮功能的FTL對不同類型文件的平均壓縮率對比。可以看出,除FLV類型文件外,其它五種類型的文件的平均壓縮率都在65%以下,其中Word文檔的平均壓縮率最高,達到了36%。而FLV文件則幾乎無法進行壓縮,這是因為FLV文件本身是一種壓縮視頻格式,再用LZ77算法進行壓縮幾乎沒有效果。所以,在一些針對文本型數(shù)據(jù)存儲的特定應(yīng)用場合,本發(fā)明帶有數(shù)據(jù)壓縮功能的FTL,可以將一個待寫入閃存固態(tài)盤的文件實際寫入的數(shù)據(jù)量減少到其自身大小的60%左右,與不帶數(shù)據(jù)壓縮功能的閃存固態(tài)盤相當(dāng),增加了約40%的存儲空間。圖8是采用帶有數(shù)據(jù)壓縮功能的FTL和不帶數(shù)據(jù)壓縮功能的FTL相比,對于不同類型文件,閃存固態(tài)盤平均讀/寫延時降低比例的示意圖??梢钥闯?,使用本發(fā)明帶數(shù)據(jù)壓縮功能的FTL,對不同類型文件,閃存固態(tài)盤的讀延時和寫延時都有了顯著降低讀延時的降低比例可以達到48%59%,寫延時的降低比例可以達到42%76%,尤其是對Word文檔、C程序代碼和網(wǎng)頁文件的寫延時降低比例都超過了60%。權(quán)利要求帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層,其特征在于帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層FTL主要由壓縮器Compressor、解壓器Decompressor、緩沖區(qū)Buffer、地址映射管理模塊、垃圾回收模塊和損耗均衡模塊組成,Compressor將主機發(fā)出的待寫數(shù)據(jù)進行壓縮后寫入Buffer;Decompressor將從Buffer或閃存中讀出的數(shù)據(jù)解壓縮后返回給主機;Buffer接收Compressor送來的壓縮數(shù)據(jù)并拼接成若干完整的閃存數(shù)據(jù)頁;地址映射管理模塊負(fù)責(zé)整個讀寫過程中的地址映射關(guān)系的正確無誤;垃圾回收模塊負(fù)責(zé)對失效閃存塊進行回收;損耗均衡模塊負(fù)責(zé)均衡對各個閃存塊的擦寫次數(shù)。2.帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層的實現(xiàn)方法,其特征在于對寫入數(shù)據(jù)的壓縮和讀出數(shù)據(jù)的解壓縮采用基于LZ77算法的單頁壓縮策略,對于要寫入閃存的數(shù)據(jù),以一頁為單位進行壓縮,主機發(fā)出一個寫操作就進行一次壓縮,將壓縮后的數(shù)據(jù)放在緩存中,當(dāng)緩存中剩余的空間不夠再放入壓縮數(shù)據(jù)時,將幾次寫操作的壓縮數(shù)據(jù)在緩存中拼接成若干個完整的閃存數(shù)據(jù)頁,寫入閃存;讀數(shù)據(jù)時,讀出兩個閃存物理頁,提取相應(yīng)壓縮數(shù)據(jù),進行解壓縮操作,即得到要讀取的數(shù)據(jù);將主機發(fā)出的邏輯地址映射到閃存物理頁地址、數(shù)據(jù)在物理頁上的起始位置以及長度,用元組物理頁地址1,起始位置1,長度1,或物理頁地址1,物理頁地址2,起始位置1,起始位置2,長度1,長度2,來表示一條邏輯地址與物理地址的映射關(guān)系。3.根據(jù)權(quán)利要求2所述的帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層的實現(xiàn)方法,其特征在于在從閃存中讀出壓縮數(shù)據(jù)包括五個主要步驟1)主機發(fā)出要讀取的數(shù)據(jù)的邏輯地址LogicAddress=LAi;2)以該邏輯地址為下標(biāo),查詢BoF表,即根據(jù)BoF[LAi]的值,確定要讀取的數(shù)據(jù)是在Buffer中還是在閃存中;3)若要讀取的數(shù)據(jù)在Buffer中,則順序查找sltable表,找到相應(yīng)的表項,該表項的LogicAddress字段等于主機發(fā)出的邏輯地址LAi;然后根據(jù)該表項的startpos和length字段,從Buffer的startpos位置開始,連續(xù)讀取length字節(jié)的數(shù)據(jù),這段數(shù)據(jù)即為主機要讀取的數(shù)據(jù)所對應(yīng)的壓縮數(shù)據(jù);4)若要讀取的數(shù)據(jù)在閃存中,則以該邏輯地址為下標(biāo),查詢Ittable表,若lttable[LAi]->tag=1,則主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù)在一個閃存物理頁上,將地址為lttable[LAi]->p的物理頁讀出,根據(jù)lttable[LAi]->offset和lttable[LAi]->length的值,從讀出的物理頁中提取主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù);若lttable[LAi]->tag=2,則按照前述方法讀出兩段壓縮數(shù)據(jù)拼接起來即為主機要讀取的數(shù)據(jù)對應(yīng)的壓縮數(shù)據(jù);5)將讀出的壓縮數(shù)據(jù)解壓,返回給主機。4.根據(jù)權(quán)利要求2所述的帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層的實現(xiàn)方法,其特征在壓縮待寫入的數(shù)據(jù)、將壓縮數(shù)據(jù)寫入BufferJfBuffer中數(shù)據(jù)寫入閃存,主要包括六個步驟1)主機發(fā)出要寫入的數(shù)據(jù)以及它的邏輯地址LogicAddress=LAi;2)將要寫入的數(shù)據(jù)進行壓縮,得到壓縮后數(shù)據(jù)長度destlen;3)以該邏輯地址為下標(biāo),查詢BoF表,即根據(jù)BoF[LAi]的值,確定邏輯地址LogicAddress是第一次被寫入還是寫更新;寫更新分為兩種情況要更新的數(shù)據(jù)在Buffer中和在閃存中;4)若是第一次被寫入,若是Buffer中剩余的空間大于等于壓縮后的數(shù)據(jù)大小,根據(jù)buffer_next的值,則將壓縮后的數(shù)據(jù)寫入Buffer,然后根據(jù)sltablejext找到sltable中下一個可用的表項,登記相應(yīng)信息;若是Buffer中剩余的空間小于壓縮后的數(shù)據(jù)大小,則先將Buffer中的數(shù)據(jù)全部寫入閃存中,并在Ittable中登記相應(yīng)信息,然后再將壓縮數(shù)據(jù)寫入Buffer中并在sltable中登記相應(yīng)信息;5)若是寫更新且要更新的數(shù)據(jù)在閃存中,則首先按照步驟4進行操作,最后更新isvalid表,將原來壓縮數(shù)據(jù)對應(yīng)的物理頁上的有效壓縮數(shù)據(jù)段數(shù)減1;6)若是寫更新且要更新的數(shù)據(jù)在Buffer中,若是Buffer中剩余的空間大于等于壓縮后的數(shù)據(jù)大小,根據(jù)buffer_next的值,先將壓縮數(shù)據(jù)寫入Buffer中,然后調(diào)整Buffer內(nèi)容,將LAi原來對應(yīng)的壓縮數(shù)據(jù)覆蓋,并調(diào)整sltable中的相應(yīng)表項;若是Buffer中剩余的空間小于壓縮后的數(shù)據(jù)大小,則先將Buffer中的數(shù)據(jù)寫入閃存中,并在Ittable中登記相應(yīng)信息,然后將壓縮數(shù)據(jù)寫入Buffer中并在sltable中登記相應(yīng)信息,最后更新isvalid表,將原壓縮數(shù)據(jù)對應(yīng)的物理頁上的有效壓縮數(shù)據(jù)段數(shù)減1。全文摘要本發(fā)明公開了帶有數(shù)據(jù)壓縮功能的閃存轉(zhuǎn)換層及實現(xiàn)方法。帶有數(shù)據(jù)壓縮功能的FTL主要由壓縮器Compressor、解壓器Decompressor、緩沖區(qū)Buffer、地址映射管理模塊、垃圾回收模塊和損耗均衡模塊組成。對寫入數(shù)據(jù)的壓縮和讀出數(shù)據(jù)的解壓縮采用了基于LZ77算法的單頁壓縮策略。利用數(shù)據(jù)壓縮技術(shù)對讀/寫數(shù)據(jù)進行解/壓縮,并在FTL中實現(xiàn)了一個軟buffer,減少了每次實際寫入和讀出閃存固態(tài)盤的數(shù)據(jù)量,從而提高閃存固態(tài)盤的整體讀寫性能。文檔編號G06F12/02GK101916228SQ201010254409公開日2010年12月15日申請日期2010年8月17日優(yōu)先權(quán)日2010年8月17日發(fā)明者劉志龍,劉芳,安龍飛,杜溢墨,肖儂,蔡志平,陳志廣申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1