數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)的壓縮和格式化的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開涉及計算機系統(tǒng)的數(shù)據(jù)存儲系統(tǒng)。更具體地,本公開涉及存儲系統(tǒng)的數(shù)據(jù)的壓縮和格式化。
【背景技術(shù)】
[0002]現(xiàn)代計算機系統(tǒng)不斷要求提高數(shù)據(jù)存儲系統(tǒng)容量、可靠性和性能。在1981年,用于個人計算機中的典型硬盤驅(qū)動器具有約10兆字節(jié)(MB)的容量。今天,硬盤驅(qū)動器的容量以百萬兆字節(jié)(TB)來度量。利用疊瓦式磁記錄來增加磁存儲容量。另外,現(xiàn)代盤驅(qū)動器往往包括固態(tài)存儲器以增強性能。提供用于提高數(shù)據(jù)存儲系統(tǒng)的容量、可靠性和性能的機制和體系結(jié)構(gòu)是期望的。
【附圖說明】
[0003]現(xiàn)在將參考下列附圖來描述實施本發(fā)明各種特征的系統(tǒng)和方法,其中:
[0004]圖1示出根據(jù)本發(fā)明的一些實施例的主機系統(tǒng)和數(shù)據(jù)存儲系統(tǒng)的結(jié)合。
[0005]圖2示出由根據(jù)本發(fā)明的一些實施例的數(shù)據(jù)存儲系統(tǒng)采用的壓縮和格式化。
[0006]圖3示出根據(jù)本發(fā)明的一些實施例的數(shù)據(jù)存儲系統(tǒng)采用的壓縮和格式化數(shù)據(jù)流。
[0007]圖4是示出根據(jù)本發(fā)明的一些實施例在數(shù)據(jù)存儲系統(tǒng)中存儲數(shù)據(jù)的過程的流程圖。
[0008]圖5是示出根據(jù)本發(fā)明的一些實施例檢索存儲在數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)的過程的流程圖。
【具體實施方式】
[0009]雖然描述了特定實施例,但這些實施例只是示例方式提供,并不旨在限制本發(fā)明的保護范圍。實際上,本文描述的新穎方法和系統(tǒng)可以以各種其他形式體現(xiàn)。而且,在不偏離本發(fā)明保護范圍的情況下,可以對本文所述的方法和系統(tǒng)形式進行各種省略、替換和變更。
[0010]
[0011]數(shù)據(jù)存儲系統(tǒng)能夠采用壓縮技術(shù)來滿足增加的容量、可靠性以及性能的需求。在將主機系統(tǒng)數(shù)據(jù)存儲在數(shù)據(jù)存儲系統(tǒng)之前壓縮主機系統(tǒng)數(shù)據(jù)通常使得壓縮的數(shù)據(jù)具有比主機系統(tǒng)提供的原始未壓縮的數(shù)據(jù)更小的大小。因此,主機系統(tǒng)提供的固定大小的主機數(shù)據(jù)單元在壓縮后變成可變大小的數(shù)據(jù)單元。存儲和檢索此類可變大小的數(shù)據(jù)存在許多挑戰(zhàn)。例如,在數(shù)據(jù)存儲系統(tǒng)介質(zhì)中存儲可變大小的數(shù)據(jù)可能需要對數(shù)據(jù)存儲系統(tǒng)存儲數(shù)據(jù)和保持跟蹤所存儲的數(shù)據(jù)的方式進行相當大的改變。作為另一示例,因為主機系統(tǒng)通常希望固定大小的數(shù)據(jù)在數(shù)據(jù)檢索期間被返回,也可能有必要對數(shù)據(jù)檢索機制進行相當大的更改。
[0012]在一些實施例中,提供用于壓縮和格式化主機數(shù)據(jù)(或用戶數(shù)據(jù))以在數(shù)據(jù)存儲系統(tǒng)中存儲的機制。數(shù)據(jù)存儲系統(tǒng)能夠在將固定大小的數(shù)據(jù)存儲在介質(zhì)上之前壓縮固定大小的數(shù)據(jù)并格式化所獲得的可變大小的壓縮數(shù)據(jù)以用于存儲在通常具有固定大小存儲粒度的介質(zhì)上,諸如磁介質(zhì)的扇區(qū)和非易失性固態(tài)存儲器的頁面。一個或更多個模塊能夠壓縮輸入主機數(shù)據(jù)并形成固定大小的“虛擬”存儲單元(或存儲單元)的輸出流,其包含一個或更多個壓縮主機數(shù)據(jù)單元、糾錯和檢測碼(H)C)信息和用于解碼存儲單元的邏輯內(nèi)容的元數(shù)據(jù)。虛擬存儲單元用作壓縮的主機數(shù)據(jù)的固定大小的容器。
[0013]在一些實施例中,在向數(shù)據(jù)存儲系統(tǒng)寫入數(shù)據(jù)期間,未壓縮的固定大小的主機數(shù)據(jù)單元被相鄰的邏輯地址分組、EDC數(shù)據(jù)剝離并被壓縮為一個或更多個可變大小的壓縮數(shù)據(jù)單元。為了保持數(shù)據(jù)保護和檢錯以及恢復(fù),壓縮數(shù)據(jù)單元的未壓縮數(shù)據(jù)用于確定附加到壓縮數(shù)據(jù)單元的新H)C。壓縮邏輯也形成可以包括主機邏輯地址和一定長度的壓縮數(shù)據(jù)的壓縮數(shù)據(jù)單元元數(shù)據(jù)。壓縮凈負荷能夠包括元數(shù)據(jù)、確定的EDC和壓縮的主機數(shù)據(jù)。可以附加一個或更多個壓縮凈負荷以形成固定大小的虛擬存儲單元,所述一個或更多個壓縮凈負荷能夠包括一個或更多個完全或部分凈負荷。虛擬存儲單元還能夠包括用于解碼虛擬存儲單元的邏輯內(nèi)容的元數(shù)據(jù)。例如,虛擬存儲單元元數(shù)據(jù)能夠包括第一壓縮映射單元的偏移、虛擬數(shù)據(jù)單元塊地址字段和序列號。附加EDC數(shù)據(jù)能夠附加到虛擬存儲單元。虛擬存儲單元能夠從易失性存儲器緩沖器移到非易失性介質(zhì)。
[0014]在一些實施例中,從數(shù)據(jù)存儲系統(tǒng)讀取所存儲的數(shù)據(jù)涉及執(zhí)行寫數(shù)據(jù)的逆。從介質(zhì)檢索適當?shù)囊粋€或更多個虛擬存儲單元并且數(shù)據(jù)被解壓縮。在解壓期間,數(shù)據(jù)存儲系統(tǒng)使用虛擬存儲單元元數(shù)據(jù)和壓縮凈負荷元數(shù)據(jù)的各個元素拆包包含所需主機數(shù)據(jù)的壓縮數(shù)據(jù)單元(一個或更多),解壓所壓縮的數(shù)據(jù)單元(一個或更多)并以主機系統(tǒng)所希望的固定大小格式生成未壓縮的數(shù)據(jù)。數(shù)據(jù)存儲系統(tǒng)還能夠使用元數(shù)據(jù)驗證正確的數(shù)據(jù)單元被返回到主機系統(tǒng)。
[0015]系統(tǒng)概沐
[0016]圖1示出根據(jù)本發(fā)明的一些實施例的主機系統(tǒng)和數(shù)據(jù)存儲系統(tǒng)的結(jié)合100。如圖所示,數(shù)據(jù)存儲系統(tǒng)120 (例如,固態(tài)驅(qū)動器)包括控制器130和存儲介質(zhì)140。介質(zhì)140包括非易失性固態(tài)存儲器陣列150。固態(tài)存儲器陣列150可以包括閃存集成電路、氧族化合物RAM(C-RAM)、相變存儲器(PC-RAM或PRAM)、可編程金屬化單元RAM(PMC_RAM或PMCm)、雙向統(tǒng)一存儲器(OUM)、電阻RAM(RRAM)、NAND存儲器(例如,單級單元(SLC)存儲器、多級單元(MLC)存儲器或它們的任何結(jié)合)、NOR存儲器、EEPR0M、鐵電存儲器(FeRAM)、磁阻RAM(MRAM)、其他離散的NVM(非易失性存儲器)芯片或它們的任何結(jié)合。介質(zhì)140還包括磁存儲裝置160,磁存儲裝置160包括磁記錄介質(zhì)164。在一個實施例中,磁存儲裝置160利用疊瓦式磁記錄。存儲介質(zhì)140能夠進一步包括其他類型的存儲裝置。在一些實施例中,存儲介質(zhì)140能夠只包括固態(tài)存儲器陣列140或磁存儲裝置160中的一種。
[0017]控制器130能夠經(jīng)配置從主機系統(tǒng)110的存儲接口模塊112(例如,裝置驅(qū)動器)接收數(shù)據(jù)和/或存儲存取命令。存儲接口 112通信的存儲存取命令能夠包括主機系統(tǒng)110發(fā)出的寫數(shù)據(jù)命令和讀數(shù)據(jù)命令。讀命令和寫命令能夠指定用于存取數(shù)據(jù)存儲系統(tǒng)120的邏輯地址(例如,邏輯塊地址或LBA)??刂破?30能夠在介質(zhì)140中執(zhí)行接收到的命令。
[0018]數(shù)據(jù)存儲系統(tǒng)120能夠存儲主機系統(tǒng)110通信的數(shù)據(jù)。換句話說,數(shù)據(jù)存儲系統(tǒng)120能夠充當主機系統(tǒng)110的存儲器存儲。為了促進這個功能,控制器130能夠?qū)崿F(xiàn)邏輯接口。邏輯接口能夠向主機系統(tǒng)110呈現(xiàn)數(shù)據(jù)存儲系統(tǒng)的存儲器,作為能夠存儲用戶數(shù)據(jù)的一組邏輯地址(例如,連貫地址)。內(nèi)在地,控制器130能夠?qū)⑦壿嫷刂酚成涞浇橘|(zhì)140中的各種物理位置或地址。控制器130包括緩沖器132,緩沖器132能夠包括易失性存儲器,諸如隨機存取存儲器(RAM)(例如,DRAM、SRAM等)。在一個實施例中,緩沖器132在控制器130外部??刂破?30還包括壓縮和格式化模塊134,其經(jīng)配置壓縮和格式化主機數(shù)據(jù)以用于存儲在介質(zhì)140中,并且解壓縮和格式化存儲數(shù)據(jù)以用于提供給主機系統(tǒng)110。壓縮和格式化模塊134能夠利用緩沖器132存儲和檢索數(shù)據(jù)并執(zhí)行壓縮和/或格式化任務(wù)。在一個實施例中,壓縮和格式化模塊134在硬件諸如片上系統(tǒng)(SoC)硬件模塊中實現(xiàn)。硬件實現(xiàn)能夠使用專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或它們的結(jié)合來實現(xiàn)。在另一實施例中,壓縮和格式化模塊134能夠在固件中實現(xiàn)或?qū)崿F(xiàn)為硬件和固件的結(jié)合。
[0019]在一些實施例中,主機系統(tǒng)110在數(shù)據(jù)存儲系統(tǒng)120中存儲數(shù)據(jù)并且數(shù)據(jù)存儲系統(tǒng)向主機系統(tǒng)返回格式化為一個或更多個邏輯主機數(shù)據(jù)單元的數(shù)據(jù)。邏輯主機數(shù)據(jù)單元能夠跨越邏輯地址范圍,其中每個邏輯地址對應(yīng)介質(zhì)140中的物理位置。主機數(shù)據(jù)單元能夠是任何合適大小(諸如512字節(jié)、1024字節(jié)(IKB) ,2048字節(jié)(2KB) ,4096字節(jié)(4KB)等)的固定大小的數(shù)據(jù)單元。在一個實施例中,主機系統(tǒng)110采用512字節(jié)數(shù)據(jù)單元或扇區(qū)。在一些實施例中,介質(zhì)140被劃分為合適大小(諸如512字節(jié)、1024字節(jié)(IKB)、2048字節(jié)(2KB)、4096字節(jié)(4KB)等)的固定大小的物理介質(zhì)存儲單元(或存儲器數(shù)據(jù)單元)。物理介質(zhì)存儲單元能夠?qū)?yīng)存儲器的最小可編程和可讀部分并且能夠跨越各個存儲器位置的物理地址。在一些實施例中,不同的介質(zhì)類型包括不同大小的介質(zhì)存儲單元。例如,固態(tài)存儲器陣列150能夠被劃分為芯片、塊和頁面(諸如2KB頁面),并且磁記錄介質(zhì)164能夠被劃分為磁道、群集和扇區(qū),諸如512字節(jié)扇區(qū)。
[0020]壓縮和格式化
[0021 ] 圖2示出根據(jù)本發(fā)明的一些實施例的數(shù)據(jù)存儲系統(tǒng)120采用的壓縮和格式化200。主機系統(tǒng)110提供用于在數(shù)據(jù)存儲系統(tǒng)120中存儲的主機數(shù)據(jù)(或用戶數(shù)據(jù))。主機系統(tǒng)110能夠提供固定大小的主機數(shù)據(jù)單元形式(諸如512字節(jié)的邏輯扇區(qū))的主機數(shù)據(jù)。主機系統(tǒng)I1能夠提供主機數(shù)據(jù)作為一個或更多個寫數(shù)據(jù)命令的部分。在數(shù)據(jù)存儲系統(tǒng)120側(cè),壓縮和格式