国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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