化模塊134壓縮和格式化主機(jī)數(shù)據(jù)單元以用于存儲(chǔ)在介質(zhì)140中。
[0022]在一些實(shí)施例中,主機(jī)數(shù)據(jù)單元由映射單元模塊210處理。映射單元能夠被選擇為主機(jī)數(shù)據(jù)單元大小的整數(shù)倍,諸如NXs1S s i/N,其中S1是主機(jī)數(shù)據(jù)單元大小(例如,512字節(jié)),并且N是整數(shù)。映射單元的大小能夠經(jīng)選擇以便在通過壓縮獲得的存儲(chǔ)空間的減小與存取存儲(chǔ)在介質(zhì)中的壓縮和格式化數(shù)據(jù)相關(guān)聯(lián)的延遲之間實(shí)現(xiàn)最佳或基本最佳平衡。在一些實(shí)施例中,映射單元構(gòu)建器212將一個(gè)或更多個(gè)主機(jī)數(shù)據(jù)單元組合為一個(gè)或更多個(gè)映射單元。在一些實(shí)施例中,映射單元構(gòu)建器212將連貫或連續(xù)的主機(jī)數(shù)據(jù)單元組合為一個(gè)或更多個(gè)映射單元。在一個(gè)實(shí)施例中,連貫或連續(xù)主機(jī)數(shù)據(jù)單元與連續(xù)的邏輯地址相關(guān)聯(lián)。另外,大小等于主機(jī)數(shù)據(jù)單元大小的整數(shù)倍大小的匹配的主機(jī)數(shù)據(jù)單元能夠存儲(chǔ)在映射單元中。例如,假設(shè)主機(jī)系統(tǒng)110發(fā)送具有對(duì)應(yīng)于512字節(jié)邏輯扇區(qū)0-7、8-15和16-23的主機(jī)數(shù)據(jù)單元的寫數(shù)據(jù)命令。假設(shè)映射單元構(gòu)建器212經(jīng)配置將匹配的4KB主機(jī)數(shù)據(jù)(或八個(gè)匹配的512字節(jié)邏輯扇區(qū))組合為映射單元,其中,“匹配”是指開始(和結(jié)束)邏輯地址以及大小的匹配。對(duì)于上述示例,映射單元構(gòu)建器212生成三個(gè)映射單元,其包含邏輯扇區(qū)0-7、8-15和16-23的主機(jī)數(shù)據(jù)單元。繼續(xù)先前的示例,假設(shè)主機(jī)系統(tǒng)110發(fā)送具有對(duì)應(yīng)于邏輯扇區(qū)1-8的主機(jī)數(shù)據(jù)單元的寫數(shù)據(jù)命令。這些主機(jī)數(shù)據(jù)單元與八個(gè)邏輯扇區(qū)相關(guān)聯(lián)并具有4KB合計(jì)大小。不過,這些主機(jī)數(shù)據(jù)單元不與八個(gè)邏輯扇區(qū)的大塊匹配(例如,介質(zhì)存儲(chǔ)單元邊界線交叉)。就是說,這些主機(jī)數(shù)據(jù)單元的開始邏輯扇區(qū)是1,不是O。因此,映射單元構(gòu)建器212生成如下面所討論的兩個(gè)單獨(dú)的部分映射單元:第一個(gè)對(duì)應(yīng)于邏輯扇區(qū)1-7,而第二個(gè)對(duì)應(yīng)于邏輯扇區(qū)8。在一些實(shí)施例中,映射單元構(gòu)建器212將非匹配的主機(jī)數(shù)據(jù)單元組合為映射單元。在一些實(shí)施例中,映射單元構(gòu)建器212將非連貫或連貫以及非連續(xù)的主機(jī)數(shù)據(jù)單元組合為映射單元。
[0023]在一些實(shí)施例中,映射單元構(gòu)建器212生成部分映射單元(或PMU),其包括比選定的或目標(biāo)映射單元大小更少的主機(jī)數(shù)據(jù)。例如,假設(shè)主機(jī)系統(tǒng)發(fā)送具有對(duì)應(yīng)于512字節(jié)邏輯扇區(qū)0-10的主機(jī)數(shù)據(jù)單元的寫數(shù)據(jù)命令,并假設(shè)映射單元構(gòu)建器212經(jīng)配置將匹配的4KB主機(jī)數(shù)據(jù)(或八個(gè)匹配的512字節(jié)邏輯扇區(qū))組合為映射單元。映射單元構(gòu)建器212生成對(duì)應(yīng)于邏輯扇區(qū)0-7的主機(jī)數(shù)據(jù)單元的第一完全或完整映射單元和對(duì)應(yīng)于邏輯扇區(qū)8-10的主機(jī)數(shù)據(jù)單元的第二部分映射單元。對(duì)應(yīng)于和邏輯扇區(qū)8-10相關(guān)聯(lián)的數(shù)據(jù)的部分映射單元能夠在以后當(dāng)主機(jī)系統(tǒng)110將數(shù)據(jù)寫入邏輯扇區(qū)11-15中時(shí)集成到完全映射單元中。
[0024]在一些實(shí)施例中,由映射單元模塊210構(gòu)建的映射單元(完全或部分)被壓縮并且由壓縮和加密模塊220壓縮可選地加密。在一些實(shí)施例中,數(shù)據(jù)壓縮模塊222首先壓縮并隨后可選加密所壓縮的數(shù)據(jù)。加密在壓縮后執(zhí)行,因?yàn)榧用軘?shù)據(jù)被隨機(jī)化并且可能是不可壓縮的。在一些實(shí)施例中,使用無(wú)損壓縮,諸如Lempel-Ziv-WeIch(LZW)壓縮。由數(shù)據(jù)壓縮模塊222生成的壓縮映射單元(一個(gè)或更多)能夠被稱為壓縮凈負(fù)荷。在一些實(shí)施例中,部分映射單元未被壓縮,以便以后更有效地集成到完全映射單元中。在一些實(shí)施例中,完全映射單元未被壓縮。例如,一個(gè)未壓縮的映射單元能夠作為虛擬存儲(chǔ)單元來(lái)存儲(chǔ),如下面解釋的。
[0025]在一些實(shí)施例中,壓縮(和可選加密)映射單元數(shù)據(jù)具有小于(或等于)未壓縮映射單元的大小的大小。因此,壓縮映射單元能夠具有可變大小。不過,如上面解釋的,介質(zhì)140能夠具有固定大小的存儲(chǔ)粒度,諸如固定大小的介質(zhì)存儲(chǔ)單元(或存儲(chǔ)器數(shù)據(jù)單元)。例如,固態(tài)存儲(chǔ)器陣列150能夠包括存儲(chǔ)器頁(yè)面,其中,頁(yè)面是最小可編程的和/或可檢索的存儲(chǔ)器單元。作為另一示例,磁記錄介質(zhì)164能夠包括扇區(qū),其中扇區(qū)是最小可編程和/或可檢索存儲(chǔ)器單元。壓縮映射單元被提供給虛擬存儲(chǔ)單元模塊230,虛擬存儲(chǔ)單元模塊230將一個(gè)或更多個(gè)壓縮映射單元(或在一些實(shí)施例中,未壓縮的映射單元)組合為固定大小的存儲(chǔ)單元以用于在介質(zhì)中存儲(chǔ)。
[0026]在一些實(shí)施例中,虛擬存儲(chǔ)單元構(gòu)建器232經(jīng)配置將壓縮映射單元組合為具有與介質(zhì)存儲(chǔ)單元的大小匹配的大小的虛擬存儲(chǔ)單元。例如,虛擬存儲(chǔ)單元的大小能夠是介質(zhì)存儲(chǔ)單元的整數(shù)倍,諸如NXs2S s 2/N,其中S2是介質(zhì)存儲(chǔ)單元大小,并且N是整數(shù)。在一個(gè)實(shí)施例中,虛擬存儲(chǔ)單元的大小與介質(zhì)存儲(chǔ)單元的大小(諸如4KB)相同。在另一實(shí)施例中,虛擬存儲(chǔ)單元的大小經(jīng)選擇使得一個(gè)或更多個(gè)壓縮映射單元被組合為虛擬存儲(chǔ)單元。在一些實(shí)施例中,不同大小的介質(zhì)存儲(chǔ)單元能夠用于不同類型的介質(zhì)。如圖1所示,數(shù)據(jù)存儲(chǔ)系統(tǒng)120包括固態(tài)存儲(chǔ)器140和磁存儲(chǔ)裝置160,磁存儲(chǔ)裝置160能夠具有不同大小的介質(zhì)存儲(chǔ)單元。例如,固態(tài)存儲(chǔ)器140能夠包括大小為8KB的存儲(chǔ)器頁(yè)面,而磁記錄介質(zhì)164能夠包括4KB扇區(qū)。虛擬存儲(chǔ)單元構(gòu)建器232能夠組合兩種類型的虛擬存儲(chǔ)單元:在固態(tài)存儲(chǔ)器140中被編程的8KB存儲(chǔ)單元和寫入磁記錄介質(zhì)164中的4KB存儲(chǔ)單元。
[0027]在一些實(shí)施例中,包括一個(gè)或更多個(gè)壓縮(或未壓縮)數(shù)據(jù)單元的虛擬存儲(chǔ)單元用填充數(shù)據(jù)填補(bǔ),以便虛擬存儲(chǔ)單元的大小與對(duì)應(yīng)介質(zhì)存儲(chǔ)單元(例如,對(duì)應(yīng)于虛擬存儲(chǔ)單元將被存儲(chǔ)的介質(zhì))的大小匹配。例如,假設(shè)壓縮映射單元的大小為3.5KB,并使用4KB虛擬存儲(chǔ)單元。虛擬存儲(chǔ)單元構(gòu)建器232能夠?qū)?.5KB壓縮映射單元和0.5KB (或512字節(jié))填充數(shù)據(jù)組合為虛擬存儲(chǔ)單元。作為另一示例,假設(shè)兩個(gè)壓縮映射單元的合并大小為3.7KB,并使用4KB虛擬存儲(chǔ)單元。虛擬存儲(chǔ)單元構(gòu)建器232能夠?qū)⒕哂?.7KB的合并大小的兩個(gè)壓縮映射單元與0.3KB的填充數(shù)據(jù)組合為虛擬存儲(chǔ)單元。填充數(shù)據(jù)能夠包括一個(gè)或更多個(gè)合適的值,諸如所有零值。
[0028]在一些實(shí)施例中,壓縮映射單元能夠分離多個(gè)虛擬存儲(chǔ)單元。壓縮映射單元能夠包括壓縮凈負(fù)荷或未壓縮凈負(fù)荷(例如,部分映射單兀凈負(fù)荷可以未壓縮)。例如,假設(shè)第一壓縮映射單元大小為1KB,第二壓縮映射單元大小為3.5KB,第三壓縮映射單元大小為3KB,則使用4KB虛擬存儲(chǔ)單元。虛擬存儲(chǔ)單元構(gòu)建器232能夠?qū)⒌谝粔嚎s映射單元(大小為1KB)和3KB的第二壓縮映射單元(或分離的壓縮映射單元)組合為第一虛擬存儲(chǔ)單元。此外,虛擬存儲(chǔ)單元構(gòu)建器232能夠?qū)⑹O碌?.5KB的第二壓縮映射單元(或剩余壓縮映射單元)、第三壓縮映射單元(大小為3KB)和0.5KB的填充數(shù)據(jù)組合為第二虛擬存儲(chǔ)單元。在一些實(shí)施例中,壓縮映射單元被分離為連續(xù)虛擬存儲(chǔ)單元。在另一些實(shí)施例中,壓縮映射單元被分離為非連續(xù)虛擬存儲(chǔ)單元。
[0029]在一些實(shí)施例中,組合為虛擬存儲(chǔ)單元的多個(gè)壓縮映射單元只包括連續(xù)主機(jī)數(shù)據(jù)單元。例如,包括對(duì)應(yīng)于512字節(jié)邏輯扇區(qū)0-7的主機(jī)數(shù)據(jù)單元的第一壓縮映射單元和包括對(duì)應(yīng)于邏輯扇區(qū)8-15的主機(jī)數(shù)據(jù)單元的第二壓縮映射單元被合并為虛擬存儲(chǔ)單元。在一些實(shí)施例中,虛擬存儲(chǔ)單元能夠包括非連續(xù)主機(jī)數(shù)據(jù)單元。例如,包括對(duì)應(yīng)于邏輯扇區(qū)0-7的主機(jī)數(shù)據(jù)單元的第一壓縮映射單元和包括對(duì)應(yīng)于邏輯扇區(qū)32-39的主機(jī)數(shù)據(jù)單元的第二壓縮映射單元被合并為虛擬存儲(chǔ)單元。
[0030]在一些實(shí)施例中,映射單元模塊210、壓縮和加密模塊220和虛擬存儲(chǔ)單元模塊230操作存儲(chǔ)在緩沖器132中的數(shù)據(jù)。就是說,映射單元、壓縮映射單元和虛擬存儲(chǔ)單元在緩沖器132中形成并被操控。組合的虛擬存儲(chǔ)單元能夠存儲(chǔ)在非易失性介質(zhì)140中。
[0031]在一些實(shí)施例中,讀數(shù)據(jù)包括執(zhí)行與寫數(shù)據(jù)相關(guān)聯(lián)的相反操作。響應(yīng)于從主機(jī)系統(tǒng)接收到的讀數(shù)據(jù)命令,該命令包括將要被檢索的主機(jī)數(shù)據(jù)的邏輯地址,虛擬存儲(chǔ)單元解構(gòu)器234在介質(zhì)140中(和/或緩沖器132中)識(shí)別或定位具有將要被檢索的主機(jī)數(shù)據(jù)的一個(gè)或更多個(gè)虛擬存儲(chǔ)單元。如下面解釋的,虛擬存儲(chǔ)單元解構(gòu)器234能夠使用映射數(shù)據(jù)用于執(zhí)行識(shí)別。虛擬存儲(chǔ)單元解構(gòu)器234從檢索的一個(gè)或更多個(gè)虛擬存儲(chǔ)單元中識(shí)別一個(gè)或更多個(gè)壓縮映射單元,所述一個(gè)或更多個(gè)壓縮映射單元包含將要被檢索的主機(jī)數(shù)據(jù)。數(shù)據(jù)解密器和解構(gòu)器244解密(如果數(shù)據(jù)被加密)并解壓(如果數(shù)據(jù)被壓縮)一個(gè)或更多個(gè)壓縮映射單元的凈負(fù)荷以獲得包含將要被檢索的主機(jī)數(shù)據(jù)的一個(gè)或更多個(gè)映射單元。映射單元解構(gòu)器214拆包(unpack)將要從一個(gè)或更多個(gè)映射單元中檢索的主機(jī)數(shù)據(jù)。將要被檢索的主機(jī)數(shù)據(jù)被返回到主機(jī)系統(tǒng)110。
[0032]在一些實(shí)施例中,一個(gè)或更多個(gè)映射單元模塊210、壓縮和加密模塊220和虛擬存儲(chǔ)單元模塊230在硬件(諸如一個(gè)或更多個(gè)片上系統(tǒng)(SoC)硬件模塊)中實(shí)現(xiàn)。硬件實(shí)現(xiàn)能夠使用專用集成電路(ASIC)、現(xiàn)