硬件管理的壓縮的高速緩存的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)存儲適配器,并且更具體地,涉及數(shù)據(jù)存儲適配器中寫高速緩存的硬件實(shí)施。
【背景技術(shù)】
[0002]存儲適配器和存儲子系統(tǒng)通常包括寫高速緩存以改善性能。寫高速緩存典型地可以使用相對快速的非易失性存儲器(例如,使用支持閃存的DRAM)來實(shí)施。寫高速緩存可以用于減輕寫操作的性能代償,諸如在獨(dú)立磁盤冗余陣列(“RAID”,諸如RAID 5和RAID 6)的特定配置中要求的密集的奇偶計算。通過將位于寫高速緩存的多個主機(jī)操作合并到可以通過RAID和盤設(shè)備更經(jīng)濟(jì)地處理的單個離臺操作,寫高速緩存也可以改善存儲性能。
[0003]由于存儲器芯片大小的增加以及通過使用壓縮技術(shù)以壓縮寫高速緩存的數(shù)據(jù)內(nèi)容,寫高速緩存的有效大小已經(jīng)隨著時間顯著增長。同時,更快的存儲設(shè)備(諸如固態(tài)驅(qū)動器(SSD))已經(jīng)變得越來越流行,這增加了存儲適配器所需的總體吞吐量,并且相應(yīng)地增加計算需求以趕上附接的驅(qū)動器。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例一般地涉及用于以硬件實(shí)施用于壓縮的高速緩存的控制結(jié)構(gòu),從而改進(jìn)存儲系統(tǒng)的性能的控制器和系統(tǒng)。
[0005]實(shí)施例提供一種用于管理壓縮的高速緩存的計算元件,包括:第一硬件引擎,配置為分配第一數(shù)目的虛擬存儲器頁和第一數(shù)目的物理存儲器頁,以便將接收的數(shù)據(jù)存儲到壓縮的高速緩存;第二硬件引擎,配置為壓縮接收的數(shù)據(jù),并且存儲壓縮的數(shù)據(jù),其中所述第一硬件引擎進(jìn)一步配置為解除分配沒有用于存儲壓縮的數(shù)據(jù)的一個或多個物理存儲器頁。
[0006]實(shí)施例提供一種數(shù)據(jù)存儲系統(tǒng),包括:主機(jī)系統(tǒng);一個或多個存儲設(shè)備;以及耦合到所述主機(jī)系統(tǒng)和所述一個或多個存儲設(shè)備的存儲適配器,存儲適配器包括第一硬件引擎,配置為分配第一數(shù)目的虛擬存儲器頁和第一數(shù)目的物理存儲器頁,以便將接收的數(shù)據(jù)存儲到壓縮的高速緩存;第二硬件引擎,配置為壓縮接收的數(shù)據(jù),并且存儲壓縮的數(shù)據(jù),其中所述第一硬件引擎進(jìn)一步配置為解除分配沒有用于存儲壓縮的數(shù)據(jù)的一個或多個物理存儲器頁。
[0007]實(shí)施例提供一種用于管理壓縮的高速緩存的方法,其中在接收要存儲到壓縮的高速緩存的數(shù)據(jù)的大小時,第一硬件引擎分配虛擬存儲器頁和物理存儲器頁,壓縮接收的數(shù)據(jù),并且存儲到物理存儲器頁中,并且第一硬件引擎解除分配沒有用于存儲壓縮的數(shù)據(jù)的物理存儲器頁。
【附圖說明】
[0008]以使得上述各方面能夠被詳細(xì)理解的方式,可以參照實(shí)施例進(jìn)行上面簡要概述的本發(fā)明實(shí)施例更特定描述,一些實(shí)施例在附圖中圖示。然而,要注意的是附圖僅圖示本發(fā)明的典型實(shí)施例,并且因此不應(yīng)被視為其范圍的限制,對于本發(fā)明可以允許其他等效的實(shí)施例。
[0009]圖1A是圖示根據(jù)在此描述的實(shí)施例的示例性存儲系統(tǒng)的框圖。
[0010]圖1B和1C是圖示根據(jù)在此描述的實(shí)施例的存儲系統(tǒng)中的示例性寫高速緩存的邏輯結(jié)構(gòu)。
[0011]圖2是圖示根據(jù)在此描述的實(shí)施例的使用壓縮的寫高速緩存的存儲操作的框圖。
[0012]圖3圖示根據(jù)在此描述的實(shí)施例的使用壓縮的寫高速緩存的示例操作。
[0013]圖4是圖示根據(jù)在此描述的實(shí)施例的使用壓縮的寫高速緩存的解壓縮操作的框圖。
[0014]圖5是圖示根據(jù)在此描述的實(shí)施例的使用壓縮的寫高速緩存的解除分配操作的框圖。
【具體實(shí)施方式】
[0015]為了改善存儲適配器和存儲系統(tǒng)的性能,可以通過直接以硬件實(shí)施用于壓縮的高速緩存的控制結(jié)構(gòu),添加功能性到存儲適配器。這可以包括例如壓縮和解壓縮功能,并且還可以包括管理維持壓縮的高速緩存所需的存儲器資源(虛擬的和物理的)的分配和解除分配。
[0016]圖1A圖示根據(jù)在此描述的實(shí)施例的示例性存儲系統(tǒng)100。存儲系統(tǒng)100包括主機(jī)系統(tǒng)110、存儲適配器120和存儲180。主機(jī)系統(tǒng)110可以通過適于滿足存儲適配器120的吞吐量要求的任何連接,連接到存儲適配器120的控制器140;在示出的示例中,主機(jī)系統(tǒng)110通過外圍組件快速互連(PCI e)接口 150連接到存儲適配器120。
[0017]存儲適配器120通常配置為在主機(jī)系統(tǒng)110和存儲180之間傳送數(shù)據(jù),并且可以利用用于這樣做的任何可行技術(shù)。存儲適配器120可以包括用于控制存儲(CS)122和數(shù)據(jù)存儲(DS)124的存儲器,其為寫高速緩存123提供控制存儲和數(shù)據(jù)存儲。用于CS 122和DS 124的存儲器示出為動態(tài)隨機(jī)存取存儲器(DRAM),但是可以是任何其他可行類型的存儲器。存儲適配器120還可以包括若干額外類型的存儲器,諸如閃速存儲器126和非易失性隨機(jī)存取存儲器(NVRAM) 128。
[0018]存儲適配器120包括控制器140,其包括處理器145。處理器145旨在代表單個處理器、多個處理器、具有多個處理核心的單個CPU等。盡管處理器145示出為集成到控制器140中,但是在替代實(shí)施例中,處理器可以位于存儲適配器120中的任何位置,并且通過合適的高速互連(諸如PCIe連接)通信地耦合到控制器140。
[0019]控制器140可以進(jìn)一步包括以硬件實(shí)施的若干引擎,其用于執(zhí)行根據(jù)在此描述的實(shí)施例的數(shù)據(jù)存儲和寫高速緩存操作。如所示的,控制器140至少包括主機(jī)直接存儲器存取(HDMA)引擎155、分配/解除分配引擎160、一個或多個壓縮/解壓縮引擎165、以及X0R引擎170(其可以提供用于存儲操作的奇偶計算)??刂破?40可以包括一個或多個串行附接SCSI(SAS)控制器175^,提供控制器140和存儲180之間一個或多個數(shù)據(jù)連接。
[0020]引擎可以實(shí)施為分離的計算元件,或者在替代性實(shí)施例中,兩個或者多個引擎的功能可以組合到一個計算元件中。在其他實(shí)施例中,上述一個或者多個引擎可以駐留在存儲適配器中的任何位置,或者所有引擎可以駐留在存儲適配器的外部。
[0021]存儲180包括一個或多個存儲設(shè)備182^。存儲設(shè)備182^可以包括硬盤驅(qū)動器、固態(tài)驅(qū)動器或任何其他合適的存儲設(shè)備,并且可以包括不同類型的存儲設(shè)備(例如,一個或多個硬盤驅(qū)動器和一個或多個固態(tài)驅(qū)動器)的組合。存儲180可以是主機(jī)系統(tǒng)110的外圍設(shè)備,并且替代地或額外地可以耦合到一個或多個其他計算系統(tǒng)。
[0022]圖1Β進(jìn)一步圖示寫高速緩存123的結(jié)構(gòu),其至少包括CS 122和DS 1240CS 122提供用于存儲結(jié)構(gòu)以及與DS 124中存儲的數(shù)據(jù)相關(guān)聯(lián)的額外信息的存儲。CS 122可以包括其中每個頁表格具有一個或多個頁索引的頁表格結(jié)構(gòu)122A(示出為122A1>2),以及具有一個或多個高速緩存線(示出為122Bh)的高速緩存線結(jié)構(gòu)122BAS 124可以通常分割為預(yù)定大小的一個或多個塊(不出為124i,2),或者大小可以改變。在一個實(shí)施例中,DS 124分割為統(tǒng)一的預(yù)定大小的存儲塊。
[0023]在一個實(shí)施例中,頁表格結(jié)構(gòu)122A包含多個頁索引,每個頁索引對應(yīng)于一個或多個高速緩存線并且包含指向一個或多個高速緩存線的一個或多個索引。包含在頁表格中的頁索引可以用在用于直接存儲器存取(DMA)操作的散集列表中,其中頁索引122An對應(yīng)于高速緩存線122B!并且頁索引122A12對應(yīng)于高速緩存線122B3。
[0024]接下來,圖1C圖示各個高速緩存線122B和DS124的存儲塊之間的邏輯關(guān)系。如所示的,高速緩存線122Bi包含一個或多個索引122D,并且可以包含額外數(shù)據(jù)122C。每個索引122D可以指向DS 124中的各個存儲塊。如所示的,一個索引對應(yīng)于存儲塊12如并且另一索