亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于高速緩存經壓縮的數(shù)據(jù)背景的裝置、系統(tǒng)和方法與流程

文檔序號:11450344閱讀:196來源:國知局
用于高速緩存經壓縮的數(shù)據(jù)背景的裝置、系統(tǒng)和方法與流程

本公開涉及高速緩存技術。具體地,本公開涉及采用數(shù)據(jù)壓縮的驅動高速緩存技術。



背景技術:

諸如臺式計算機、筆記本計算機、智能電話、平板電腦等的電子設備通常包括一個或多個外圍存儲設備。例如,臺式計算機可以包括硬盤驅動器(hdd),該硬盤驅動器(hdd)包括配置為持久存儲數(shù)據(jù)的磁性記錄介質(磁盤)。雖然有用,但是與設備的其他部件相比,hdd的輸入/輸出(例如,寫入/讀?。┬阅芸赡芟鄬β?。因此,hdd和其他相對慢的存儲設備(例如,帶存儲器)可能會阻礙其中它/它們被安裝的電子設備的性能。雖然已經進行了許多嘗試來改善其性能,但是hdd的機電性質實際上可能限制其性能可能被改善到的程度。

緩解由相對慢的外圍存儲設備呈現(xiàn)的瓶頸的一種方式是使用高速緩存設備(本文也稱為“高速緩存”)。通常,高速緩存設備是邏輯上駐留在相對慢的存儲設備和諸如處理器之類的電子設備的其他部件之間的存儲器設備。通常,與高速緩存設備關聯(lián)于的相對慢的存儲設備相比,高速緩存包括相對快的存儲器。高速緩存設備的存儲器可以用作用于外圍存儲設備的臨時存儲區(qū)域。例如,經常訪問的(“熱”)數(shù)據(jù)可以在其被最初訪問(例如從相對較慢的存儲設備)之后置于在高速緩存中。此后,可以對高速緩存而不是相對慢的存儲設備進行對熱數(shù)據(jù)的后續(xù)訪問。高速緩存控制器可以應用一個或多個算法和/或策略來確定哪些數(shù)據(jù)被存儲在高速緩存設備的存儲器中以及哪些被移除。由于高速緩存比相對慢的存儲設備更快,因此可以改善系統(tǒng)的輸入/輸出性能。

雖然高速緩存設備可以減輕由相對慢的外圍存儲設備引入的性能瓶頸,但是高速緩存存儲器通常相當昂貴。因此,高速緩存的大小可能被成本和/或其他考慮所限制。因此,可以存儲在高速緩存中的數(shù)據(jù)量實際上可能被其存儲器的大小所限制。

附圖說明

在附圖的各圖中通過示例的方式而非限制的方式示出了本發(fā)明的各種實施例,并且在附圖中:

圖1是圖示根據(jù)實施例的高速緩存系統(tǒng)的要素的高級框圖。

圖2a圖示了根據(jù)相應實施例的均在高速緩存系統(tǒng)中不同地交換的命令的要素。

圖2b圖示了根據(jù)實施例的被訪問以確定數(shù)據(jù)高速緩存操作的參考信息。

圖2c圖示了根據(jù)實施例的用于提供對經壓縮的數(shù)據(jù)的訪問的數(shù)據(jù)高速緩存。

圖2d和2e圖示了根據(jù)相應實施例的均被訪問以確定數(shù)據(jù)高速緩存操作的各種參考信息。

圖3是圖示根據(jù)實施例的用于控制高速緩存的方法的要素的流程圖。

圖4是圖示根據(jù)實施例的用于向高速緩存控制器提供數(shù)據(jù)壓縮信息的方法的要素的流程圖。

圖5a和5b是包括與本公開一致的高速緩存系統(tǒng)的示例性電子設備的框圖。

具體實施方式

本文中討論的實施例不同地提供了用于改善對存儲在高速緩存存儲器中的經壓縮的數(shù)據(jù)的訪問的技術和/或機制。一些高速緩存架構正在開始利用壓縮/解壓縮功能來增加有效的高速緩存容量,而同時提供對數(shù)據(jù)訪問時間的至少一些相對改善。通常,在壓縮要寫入高速緩存的數(shù)據(jù)中(或在解壓縮要從高速緩存讀取的數(shù)據(jù)中)所需要的附加時間小于將這樣的數(shù)據(jù)的未壓縮版本寫入(或從其讀取這樣的數(shù)據(jù)的未壓縮版本)相對慢的外圍存儲設備的情況下,這樣的功能是有用的。

常規(guī)的盤高速緩存架構將高速緩存分成固定大?。ɡ?,4千字節(jié)(kb)高速緩存行)的高速緩存行,其中這樣的高速緩存行位于諸如固態(tài)驅動器(ssd)之類的高速緩存設備的邏輯塊尋址(lba)范圍中。在這樣的架構中,高速緩存資源在高速緩存行粒度級上被分配——例如,以單獨的高速緩存行的預定和固定大小為單位。不幸的是,數(shù)據(jù)模式不同地壓縮。高速緩存行中的一個4kb數(shù)據(jù)可以壓縮八倍(8x),并且下一個4kb可能完全不壓縮(即,1x)。

例如,具有壓縮的常規(guī)ssd高速緩存不同地包括將lba范圍劃分成均具有等于未壓縮高速緩存行的固定大小的槽(slot)。在操作期間,這樣的槽可以根據(jù)需要在高速緩存插入、逐出和更新時被不同地填充、釋放和蓋寫。因此,這些高速緩存解決方案不充分受益于邏輯上增加的高速緩存容量的至少部分。特定實施例是下述實現(xiàn)的結果,在固定大小的高速緩存行的情況下,高速緩存控制邏輯不能利用由于壓縮而可用的至少一些高速緩存行中的空間。由這樣的實施例提供的優(yōu)點包括高速緩存容量中的有效增加和隨時間的更高的高速緩存命中率。

雖然本文中針對特定應用參考說明性實施例描述了本公開,但是應當理解,這樣的實施例僅是示例性的,并且如由所附權利要求限定的本發(fā)明不限于此。實際上,為了說明的緣故,可以在其中使用固態(tài)驅動器作為針對存儲設備(諸如硬盤驅動器或帶存儲器)的高速緩存設備的一個或多個使用模型的上下文中討論本文描述的技術。這樣的討論僅是示例性的,并且應當理解,本文所描述的技術的全部或一部分可以在其他上下文中使用。實際上,本文描述的技術可以與任何適當?shù)母咚倬彺嬖O備和存儲設備一起使用。具有對本文提供的教導的訪問的相關技術領域的技術人員將認識到本公開的范圍內的附加修改、應用和實施例以及本公開的實施例將具有效用的附加領域。

本文描述的技術可以在一個或多個電子設備中實現(xiàn)??梢岳帽疚拿枋龅募夹g的電子設備的非限制性示例包括任何種類的移動設備和/或固定設備,諸如攝像機、蜂窩電話、計算機終端、臺式計算機、電子閱讀器、傳真機、信息亭(kiosk)、上網(wǎng)本計算機、筆記本計算機、互聯(lián)網(wǎng)設備、支付終端、個人數(shù)字助理、媒體播放器和/或記錄器、服務器(例如,刀片服務器、機架安裝服務器、其組合等)、機頂盒、智能電話、平板個人計算機、超移動個人計算機、有線電話、其組合等。這樣的設備可以是便攜式的或固定的。在一些實施例中,本文描述的技術可以在臺式計算機、膝上型計算機、智能電話、平板計算機、上網(wǎng)本計算機、筆記本計算機、個人數(shù)字助理、服務器、其組合等中采用。更一般來說,本文描述的技術可以在任何電子設備中采用,高速緩存設備和存儲設備中的一個或二者可以耦合和/或安裝到所述電子設備。

術語“高速緩存設備”在本文中用于指代用作針對另一存儲器設備(后文稱為“存儲設備”)的高速緩存的存儲設備。雖然本公開聚焦于其中使用固態(tài)驅動器作為高速緩存設備的實施例,但是應當理解,這樣的描述僅是示例性的,并且術語“高速緩存設備”包含可以用作針對存儲設備的高速緩存的任何類型的存儲器設備。在沒有限制的情況下,在一些實施例中,本文描述的高速緩存設備是以固態(tài)驅動器、動態(tài)隨機存取存儲器(dram)、硬驅動器、字節(jié)可尋址的非易失性非易失性存儲器、其組合等的形式。在一些實施例中,本文描述的高速緩存設備表現(xiàn)出比相關聯(lián)的存儲設備的性能更大的輸入/輸出(“i/o”)性能。因此,在一些實施例中,本文描述的高速緩存設備可以包括比高速緩存設備關聯(lián)于的存儲設備的存儲器更快的存儲器(本文也稱為“高速緩存存儲器”)。

術語“存儲設備”在本文中用于指代可用于持久存儲數(shù)據(jù)的存儲器設備。高速緩存設備的非限制性示例包括硬驅動器(例如,采用磁性記錄介質的驅動器)、固態(tài)驅動器、帶存儲器、其組合等。在一些實施例中,本文描述的存儲設備是以表現(xiàn)出低于相關聯(lián)的高速緩存設備的i/o性能的i/o性能的一個或多個存儲器設備的形式。因此,在一些實施例中,本文描述的存儲設備可以包括比存儲設備與其相關聯(lián)的高速緩存設備的存儲器更慢的存儲器(本文也稱為“存儲存儲器”)。

如本文中的任何實施例所使用的,術語“模塊”可以指代配置為執(zhí)行與本公開一致的一個或多個操作的軟件、固件、電路和/或其組合。軟件可以被體現(xiàn)為在非瞬時計算機可讀存儲介質上記錄的軟件包、代碼、指令、指令集和/或數(shù)據(jù)。固件可以被體現(xiàn)為在存儲器設備中被硬編碼(例如,非易失性)的代碼、指令或指令集和/或數(shù)據(jù)。如本文任何實施例中所使用的“電路”可以包括例如(單一或以任何組合地)硬接線電路、諸如包括一個或多個單獨指令處理核的計算機處理器的可編程電路、狀態(tài)機電路、存儲由可編程電路執(zhí)行的指令的軟件和/或固件。模塊可以共同地或單獨地被體現(xiàn)為形成如前所定義的一個或多個電子設備的一部分的電路。在一些實施例中,本文描述的一個或多個模塊可以是以邏輯的形式,所述邏輯至少部分地在硬件中實現(xiàn)以執(zhí)行與本公開一致的一個或多個功能。

術語“固態(tài)驅動器”、“ssd”、“多個ssd”在本文可互換地用于指代其中使用集成電路組件(例如,非易失性隨機存取存儲器(nvram)組件))持久存儲數(shù)據(jù)的各種數(shù)據(jù)存儲設備中的任何一個。在任何情況下,ssd可以被理解為包括非易失性存儲器,諸如nand或nor存儲器。

術語“硬驅動器”和“hdd”在本文可互換地用于指代包括用于持久存儲數(shù)據(jù)的磁性記錄介質的數(shù)據(jù)存儲設備。術語“混合硬驅動器”、“混合硬驅動器”和“混合hdd”指代包括諸如nvram和磁性記錄介質之類的集成電路組件的組合的數(shù)據(jù)存儲設備。混合hdd包括所謂的“雙驅動混合系統(tǒng)”(其中單獨的ssd和hdd被組合成混合體,例如通過操作系統(tǒng)或其他控制硬件/軟件)和“固態(tài)混合驅動器”,其中非易失性存儲器(諸如nand存儲器)被合并到硬驅動器中。

如背景技術中所指出的,高速緩存設備可以減輕由相對慢的外圍存儲設備引入的性能瓶頸中的至少一些。然而,成本和/或其他考慮可能實際上限制可以包括在高速緩存設備中的存儲器的大小。由于可能存儲在高速緩存設備中的數(shù)據(jù)量被高速緩存存儲器的大小所限制,因此這可能對可通過使用高速緩存設備得到的性能改善施加有意義的約束。

考慮到前述內容,壓縮要存儲在高速緩存設備的存儲器中的數(shù)據(jù)可以為高速緩存系統(tǒng)提供顯著的益處。例如,數(shù)據(jù)壓縮可以使得更多數(shù)據(jù)能夠被存儲在高速緩存設備中,而不需要增加其中的存儲器的量。然而,各種考慮已經使得在許多高速緩存設備中實際上難以實現(xiàn)數(shù)據(jù)壓縮。

例如,許多高速緩存控制器被配置為將接收的數(shù)據(jù)/狀態(tài)分割為具有固定大小(例如,4千字節(jié)(kb)、6kb、8kb等)的高速緩存行。因此,例如,高速緩存控制器可以確定應當將64kb狀態(tài)寫入高速緩存存儲器。為了實現(xiàn)這一點,控制器可以將64kb狀態(tài)劃分為十六個4kb的高速緩存行。然后,控制器可以向高速緩存設備發(fā)送寫入命令,導致將每個4kb高速緩存行寫入高速緩存存儲器中的存儲塊。由于4kb高速緩存行中包含的狀態(tài)沒有被壓縮,所以控制器通常將分配高速緩存存儲器的4kb塊以用于存儲。

如上所指出的,可以通過壓縮每個高速緩存行中的數(shù)據(jù)來實際增加高速緩存設備中的高速緩存存儲器的容量。然而,每個高速緩存行中的數(shù)據(jù)可能例如由于其中包含的數(shù)據(jù)模式中的差異而不同地進行壓縮。例如,第一高速緩存行中的數(shù)據(jù)模式可以壓縮二倍(意味著經壓縮的數(shù)據(jù)是輸入數(shù)據(jù)的大小的一半),第二高速緩存行中的數(shù)據(jù)模式可以壓縮八倍(意味著經壓縮的數(shù)據(jù)是輸入數(shù)據(jù)的大小的八分之一),而第三高速緩存行中的數(shù)據(jù)模式根本不壓縮(意味著經壓縮的數(shù)據(jù)和輸入數(shù)據(jù)具有相同大?。?紤]到這一點,在采用壓縮的現(xiàn)有高速緩存系統(tǒng)中,高速緩存控制器在將經壓縮的數(shù)據(jù)寫入高速緩存存儲器之前不知道高速緩存行中經壓縮的數(shù)據(jù)的大小。因此,這樣的系統(tǒng)中的控制器通常在高速緩存存儲器中分配完全高速緩存行大小,即使給定高速緩存行中的經壓縮的數(shù)據(jù)的大小小于完全高速緩存行大小。例如,4kb高速緩存行中的數(shù)據(jù)可以被壓縮到2kb,但是高速緩存控制器可能不知道經壓縮的數(shù)據(jù)的大小。因此,即使經壓縮的數(shù)據(jù)的大小僅為2kb,控制器也可能分配高速緩存存儲器中的4kb塊以供存儲該高速緩存行中的數(shù)據(jù)。

因此,采用壓縮的現(xiàn)有高速緩存系統(tǒng)通常不能直接利用通過壓縮釋放的附加空間。相反,除了利用通過壓縮使其可用的優(yōu)點,這樣的系統(tǒng)必須在寫入經壓縮的數(shù)據(jù)之后查詢高速緩存設備,以確定高速緩存存儲器的大小是否已經改變和/或確定可用的高速緩存存儲器的量。

考慮到上述內容,本公開涉及采用數(shù)據(jù)壓縮的高速緩存技術。如下面將要詳細描述的,本公開的技術包括高速緩存系統(tǒng)和方法,其中高速緩存行中的數(shù)據(jù)在被寫入高速緩存存儲器之前被壓縮。與采用壓縮的現(xiàn)有高速緩存系統(tǒng)不同,本公開的技術使得高速緩存控制器能夠在將經壓縮的數(shù)據(jù)寫入高速緩存存儲器之前理解高速緩存行中的數(shù)據(jù)被壓縮到的程度。在一些實施例中,本文描述的高速緩存控制器可以至少部分地基于經壓縮的數(shù)據(jù)的大小、可歸因于經壓縮的數(shù)據(jù)的壓縮比(或其對應的輸入數(shù)據(jù))或其組合來確定經壓縮的數(shù)據(jù)將被存儲在高速緩存存儲器中哪里。

因此,本公開的一個方面涉及用于對數(shù)據(jù)進行高速緩存的系統(tǒng),其在本文中也被稱為高速緩存系統(tǒng)。注意,為了清楚和易于理解的緣故,獨立于其中可以使用和/或安裝高速緩存系統(tǒng)的主機設備和/或系統(tǒng)來描述本文描述的高速緩存系統(tǒng)。應當理解,高速緩存系統(tǒng)可以與在任何適當?shù)闹鳈C設備或系統(tǒng)一起使用和/或安裝任何適當?shù)闹鳈C設備或系統(tǒng)其中,該主機設備或系統(tǒng)可以以如上所定義的電子設備和/或其組件的形式,諸如固態(tài)驅動器或用作針對一個或多個外圍存儲設備的高速緩存的其他存儲器設備。在沒有限制的情況下,本文描述的高速緩存系統(tǒng)特別適用于高速緩存可用于臺式計算機、膝上型計算機、移動電話、智能電話、平板個人計算機、服務器,數(shù)據(jù)中心、其組合等中的一個或多個存儲設備。更一般地,本文描述的高速緩存系統(tǒng)可以在可能受益于高速緩存相對慢的外圍存儲設備的任何設備中實現(xiàn)。

在這方面,參考圖1,圖1是與本公開一致的示例性高速緩存系統(tǒng)的框圖。如所示,高速緩存系統(tǒng)100包括高速緩存控制器模塊(ccm)101和高速緩存設備102。

注意,ccm101在圖1中被圖示為與高速緩存設備102分離。應當理解,這樣的圖示僅是為了示例的緣故,并且ccm101可以存在于任何適當?shù)奈恢?。例如并且如圖1所指示的,在一些實施例中,ccm101是以與高速緩存設備102分離的模塊的形式。在這樣的實施例中,ccm101可以被安裝或以其他方式存在于高速緩存系統(tǒng)100與之一起使用的電子設備(例如,主機系統(tǒng),未示出)中。在這種情況下,ccm101可以與高速緩存設備102進行有線或無線通信。替代地,ccm101可以與高速緩存設備102成整體,例如,如圖5a和5b所示。例如,ccm101可以是以高速緩存設備101的板上高速緩存控制器的形式或包括高速緩存設備101的板上高速緩存控制器。在一些實施例中,高速緩存系統(tǒng)100被包括在固態(tài)盤中,并且ccm101是以ssd控制器的形式或包括ssd控制器。

在任何情況下,ccm101可以是以軟件、固件、硬件、至少部分地以硬件實現(xiàn)的邏輯或其組合的形式,其被配置為控制高速緩存設備102中或者更具體地在高速緩存設備102的存儲器106中的數(shù)據(jù)/狀態(tài)的存儲。因此,ccm101可以實現(xiàn)一個或多個已知或未來的高速緩存策略和/或算法,以確定應當從高速緩存設備102存儲和/或移除哪些數(shù)據(jù)/狀態(tài)。替代地或附加于這樣的功能,ccm101還可以被配置為確定將數(shù)據(jù)/狀態(tài)存儲在高速緩存設備102的存儲器106中哪里。如稍后將詳細描述的,ccm101可以至少部分地基于經壓縮的數(shù)據(jù)/狀態(tài)的大小、可歸因于經壓縮的數(shù)據(jù)/狀態(tài)的壓縮比或其組合來分配在存儲器106內的塊(例如,邏輯塊地址或lba)。

高速緩存設備102可以是適用于高速緩存相對慢的外圍存儲介質(未示出)的任何數(shù)據(jù)存儲設備??梢杂米鞲咚倬彺嬖O備102的適當?shù)臄?shù)據(jù)存儲設備的非限制性示例包括固態(tài)驅動器、硬驅動驅動器、動態(tài)隨機存取存儲器(dram)設備、其組合等。與前面的描述一致,在一些實施例中,高速緩存設備102可以是表現(xiàn)出比外圍存儲介質的輸入/輸出(寫入/讀?。┬阅芨鼜姷妮斎?輸出(寫入/讀?。┬阅艿娜魏螖?shù)據(jù)存儲設備,針對所述外圍存儲介質而言,所述數(shù)據(jù)存儲設備要用作高速緩存。在不限制的情況下,在一些實施例中,高速緩存設備102是以固態(tài)驅動器的形式。

如圖1中所示,高速緩存設備102包括數(shù)據(jù)壓縮模塊(dcm)103、壓縮解壓縮引擎(codec)104、傳遞緩沖器(緩沖器)105和存儲器106。dcm103通常起作用以與ccm101通信并且使高速緩存設備102執(zhí)行與本公開一致的數(shù)據(jù)壓縮操作。稍后將提供關于dcm103的操作的進一步細節(jié)。

壓縮解壓縮引擎codec104通常起作用以壓縮從ccm101接收的數(shù)據(jù)。具體地并且將如下所述,codec104可以從ccm101(或更具體地,從dcm103)接收高速緩存行中的數(shù)據(jù)。為了清楚的緣故,由codec104接收的數(shù)據(jù)被稱為輸入數(shù)據(jù)。雖然本公開描述了其中codec在來自單個高速緩存行的輸入數(shù)據(jù)上操作的實施例,但是應當理解,這樣的描述是為了示例的緣故,并且codec可以被配置為在來自多個高速緩存行的輸入數(shù)據(jù)上操作。因此,例如,ccm101可以將數(shù)據(jù)池劃分成多個高速緩存行,其中每一個包含輸入數(shù)據(jù)(例如,4kb、8kb等)。ccm101(或dcm103)可以將輸入數(shù)據(jù)從一個或多個高速緩存行發(fā)送到codec104以用于壓縮。取決于其配置,codec104可以一次僅操作輸入數(shù)據(jù)集合中的一個(即,來自一個高速緩存行的輸入數(shù)據(jù)),或者其可以同時在輸入數(shù)據(jù)的多個集合(即,來自多個高速緩存行的輸入數(shù)據(jù))上操作。

然后,codec104可以例如使用一個或多個壓縮算法在輸入數(shù)據(jù)上執(zhí)行壓縮操作,以產生經壓縮的輸出。如可以領會的,經壓縮的輸出的大小可能與輸入數(shù)據(jù)的大小不同。經壓縮的輸出的大小與輸入數(shù)據(jù)之間的相對差異可以由壓縮比來表示,在一些實施例中,所述壓縮比可以通過將輸入數(shù)據(jù)的大小除以經壓縮的輸出的大小來確定,或反之亦然。因此,例如,如果輸入數(shù)據(jù)的大小為4kb,并且經壓縮的輸出的大小為2kb,則取決于如何計算該比,壓縮比可以是0.5或2。

可以由codec104執(zhí)行的壓縮算法的非限制性示例包括lempel-ziv(lz)算法、deflate算法、lzr算法及其組合。當然,這些算法僅是示例性的,并且可以使用任何適當?shù)膲嚎s算法(并且特別是無損壓縮算法)。在沒有限制的情況下,在一些實施例中,codec104在從ccm101(或更具體地,從dcm103)接收的數(shù)據(jù)/狀態(tài)上執(zhí)行l(wèi)empel-ziv算法。

圖1圖示了其中codec104與高速緩存設備102成整體的實施例。應當理解,該圖示僅僅是為了示例的緣故,并且codec104不需要與高速緩存設備102成整體。實際上,本公開預想到其中codec104被存儲和/或實現(xiàn)在任何適當?shù)奈恢玫膶嵤├?。例如,codec104可以是由主機系統(tǒng)的其他硬件(諸如視頻卡或其他硬件加速器)實現(xiàn)的硬件codec。替代地或此外,codec可以是由例如主機系統(tǒng)的處理器執(zhí)行的軟件codec。

無論codec104的性質如何,由codec104產生的經壓縮的輸出可以被存儲在緩沖器105中。因此,緩沖器105可以被配置為存儲codec105的經壓縮的輸出。具體地,緩沖器105可以在將經壓縮的輸出寫入高速緩存設備102的存儲器106之前,存儲codec105的經壓縮的輸出。如將稍后描述的,將經壓縮的輸出寫入存儲器106可以在例如從ccm102接收到數(shù)據(jù)寫入命令(例如,寫入命令)時進行調節(jié)。此外,在向存儲器105提交經壓縮的輸出之前(例如,當經壓縮的輸出被存儲在緩沖器105中時),經壓縮的輸出要被寫入的位置(例如,存儲器106中的邏輯塊地址)可以由ccm101確定,如下面進一步將描述的。因此,可以將緩沖器105理解為傳遞緩沖器,其可以在向高速緩存存儲器106提交經壓縮的輸出之前存儲codec104的經壓縮的輸出。

緩沖器105可以是適合于存儲經壓縮的輸出的任何存儲器結構??梢杂米骶彌_器105的適當?shù)拇鎯ζ鹘Y構的非限制性示例包括靜態(tài)隨機存取存儲器(sram)、嵌入式動態(tài)隨機存取存儲器、其組合等。在沒有限制的情況下,在一些實施例中,緩沖器105的大小大于或等于大約從ccm101接收的高速緩存行的大小。因此,例如,在ccm101向高速緩存設備102傳輸4kb高速緩存行的情況下,在一些實施例中,緩沖器105的大小可以大于或等于大約4kb。當然,這僅僅是為了示例的緣故,并且緩沖器105可以是任何期望的大小。

存儲器106可以是任何適當類型的計算機可讀存儲器??梢杂米鞔鎯ζ?06的示例性存儲器類型包括但不限于:相變存儲器(pcm)、字節(jié)可尋址三維交叉點存儲器、電阻存儲器、納米線存儲器、鐵電晶體管隨機存取存儲器(fetram)、諸如nand或nor存儲器之類的閃速存儲器、包含憶阻器技術的磁阻隨機存取存儲器(mram)存儲器、自旋轉移力矩(stt)-mram、磁性驅動存儲器、光學驅動存儲器、其組合等。此外或替代地,存儲器106可以包括其他和/或稍后開發(fā)的類型的計算機可讀存儲器。

在沒有限制的情況下,在一些實施例中,存儲器106是通常與用作高速緩存設備102的存儲器設備的類型相關聯(lián)的存儲器類型。因此,例如,當高速緩存設備102是固態(tài)驅動器時,存儲器106可以是以非易失性存儲器的形式。同樣,當高速緩存設備102是硬驅動器時,存儲器106可以是以磁性記錄介質的形式。在沒有限制的情況下,在一些實施例中,高速緩存設備102是以ssd的形式,并且存儲器106是以非易失性存儲器(例如,nand存儲器)的形式。在任何情況下,存儲器106可以被配置為將數(shù)據(jù)存儲在一個或多個邏輯塊中,所述邏輯塊可以例如用高速緩存設備102的存儲器控制器或其他組件進行尋址。也就是說,存儲器106可以包括數(shù)據(jù)/狀態(tài)可以存儲于的多個邏輯塊地址(lba)或被布置在多個邏輯塊地址(lba)中。響應于如本領域通常理解的數(shù)據(jù)寫入命令,可以將數(shù)據(jù)寫入存儲器106。數(shù)據(jù)寫入命令可以是以寫入命令的形式,該寫入命令指定存儲器106內的與該命令相關聯(lián)的數(shù)據(jù)/狀態(tài)要被寫入的邏輯塊地址。

為了示例的緣故,本公開現(xiàn)在將進行到描述高速緩存系統(tǒng)100的實施例的操作,其中,高速緩存設備102是以ssd的形式,并且存儲器106是以非易失性存儲器的形式。要強調的是,以下描述是為了示例的緣故,并且與該示例相關聯(lián)地描述的操作可以與任何適當?shù)母咚倬彺嬖O備一起采用。

進一步參考圖1,ccm101可以從諸如其中可以安裝高速緩存系統(tǒng)100的主機系統(tǒng)的處理器或另一個部件之類的數(shù)據(jù)源接收數(shù)據(jù)。如以上注意的,ccm101可以應用一個或多個高速緩存策略來確定是否數(shù)據(jù)的全部或部分被寫入存儲器106。當ccm101確定要將數(shù)據(jù)的全部或一部分寫入存儲器106時,可以將要寫入的數(shù)據(jù)分配到一個或多個高速緩存行,其在大小方面可以是固定的或可變的。在沒有限制的情況下,在一些實施例中,高速緩存行具有固定大小,例如4kb、6kb、8kb、16kb、32kb、64kb等。

ccm101還可以向高速緩存行中的數(shù)據(jù)指派標簽。通常,標簽用作特定數(shù)據(jù)(在該情況下是分配給高速緩存行中的一個的數(shù)據(jù))的單元的標識符。因此,標簽可以是以適合于唯一地標識標簽所關聯(lián)的高速緩存行中的數(shù)據(jù)的任何格式。因此,例如,ccm101可以將第一標簽“a”指派給第一高速緩存行中的數(shù)據(jù),并且將第二標簽“b”指派給第二高速緩存行中的數(shù)據(jù)等。與高速緩存行相關聯(lián)的標簽的性質和格式不受限制,只要其能夠唯一地標識高速緩存行中的數(shù)據(jù)。因此,例如,標簽可以是以32位、64位、128位或256位序列號、高速緩存行中的數(shù)據(jù)的散列(hash)、其組合等的形式。在沒有限制的情況下,在一些實施例中,標簽是以64位序列號的形式。

然后,如由圖1的點1處所圖示的,ccm101可以將高速緩存行中的數(shù)據(jù)發(fā)送到高速緩存設備102以用于壓縮。在這方面,ccm101可以例如在一個或多個有線或無線信號中將壓縮命令發(fā)送到高速緩存設備102。壓縮命令可以以任何適當?shù)母袷剑T如在串行高級技術附件(sata)標準或快速非易失性存儲器(nvme)標準的任何先前、當前或未來開發(fā)版本下的供應商特定的命令。nvme或非易失性存儲器主機控制器接口規(guī)范(nvmhci)是用于訪問通過pcie總線附連的ssd的規(guī)范。例如,參見2014年11月3日批準并且可用于從http://nvmexpress.org下載的nvmexpressrevision1.2規(guī)范。在任何情況下,壓縮命令可以包括標簽的拷貝、用于壓縮的輸入數(shù)據(jù)(即,高速緩存行中的數(shù)據(jù))、以及可選地命令中的輸入數(shù)據(jù)的未經壓縮的大小的測量。該概念在圖2中圖示,其中壓縮命令201以包括標簽、輸入數(shù)據(jù)以及可選地輸入數(shù)據(jù)的未經壓縮的大小的測量的單個命令的形式圖示。當然,壓縮命令可以包括如期望的其他元素,諸如但不限于命令報頭(header)。壓縮命令還可以包括一個或多個壓縮指令或與一個或多個壓縮指令相關聯(lián),所述壓縮指令可以被配置為使codec104在輸入數(shù)據(jù)上執(zhí)行壓縮操作。當然,標簽、數(shù)據(jù)和壓縮指令不需要被包括在相同的命令中,并且可以如期望的被包括在不同的命令中。

dcm103可以直接從ccm101接收壓縮命令,或者壓縮命令可以從高速緩存設備102的其他部件被轉發(fā)到dcm103。在任何情況下,響應于壓縮命令,dcm103可以將從高速緩存控制器模塊接收的輸入數(shù)據(jù)轉發(fā)到codec104以供壓縮。作為響應,codec104可以在輸入數(shù)據(jù)上執(zhí)行一個或多個壓縮操作,例如使用如前所述的一個或多個壓縮算法。如圖1的點2處所圖示的,codec104可以在傳遞緩沖器105中存儲所得到的經壓縮的輸出。然后,codec104可以將壓縮操作的完成和經壓縮的輸出的位置(例如,緩沖器105的標識符、緩沖器105內的地址范圍等)報告到dcm103。

如圖1的點3處所圖示的,dcm103可以將返回消息傳送到ccm101。返回信號可以包括指派給輸入數(shù)據(jù)的標簽以及存儲在dcm103中的經壓縮的輸出的大小的測量。該概念在圖2a中示出,其中返回消息202被圖示為包括標簽和經壓縮的輸出的大小。因此,在一些實施例中,dcm103可以測量或以其他方式確定存儲在緩沖器105中的經壓縮的輸出的大小,并且將所確定的大小包括在返回命令中。替代地或另外,codec104可以被配置為例如在其壓縮輸入數(shù)據(jù)之后,將經壓縮的數(shù)據(jù)的大小自動地傳送到dcm103。

雖然本公開預想到實現(xiàn)其中dcm101自動地向ccm101發(fā)出指定經壓縮的大小和標簽的返回消息,但是本公開的系統(tǒng)不需要以該方式進行配置。實際上,在一些實施例中,dcm103可以在從ccm101接收到查詢消息時調節(jié)返回消息的發(fā)出。例如,當來自ccm101的輸入數(shù)據(jù)由codec104壓縮并且被存儲在傳遞緩沖器105中時,dcm103可以維護記錄(例如,表或其他數(shù)據(jù)結構),所述記錄將關聯(lián)于從ccm101接收的輸入數(shù)據(jù)(例如,各種不同的高速緩存行)的標簽與關聯(lián)于標簽的經壓縮的輸出的大小以及經壓縮的輸出的位置(例如在緩沖器105中)相關。然后,dcm101可以等待從ccm101接收查詢命令。例如,在一些實施例中,ccm101可以向dcm103傳輸查詢命令,其中查詢命令包括查詢指令和標簽。響應于查詢命令,dcm103可以查找與標簽相關聯(lián)的經壓縮的輸出的大小,并且如上所討論的向ccm101發(fā)送返回消息,所述返回消息包括標簽和經壓縮的輸出的大小。

在任何情況下,如在圖1的點4處所圖示的,ccm101可以從高速緩存設備102(或更具體地,從dcm103)接收返回消息。響應于接收到返回消息,ccm101可以分析返回消息以標識標簽和經壓縮的數(shù)據(jù)的大小。通過該分析,ccm101可以確定與標簽相關聯(lián)的輸入數(shù)據(jù)被codec104壓縮到的程度。換句話說,通過分析返回消息,ccm101可以確定存儲在緩沖器105中的經壓縮的輸出的大小。因為經壓縮的輸出與標簽相關聯(lián)(在返回消息中)并且標簽與輸入數(shù)據(jù)相關聯(lián)(在壓縮命令中),因此ccm101可以確定經壓縮的輸出的大小和/或輸入數(shù)據(jù)被codec104壓縮到的程度(即,輸入數(shù)據(jù)的壓縮比)。

然后,ccm101可以確定經壓縮的輸出要被存儲在存儲器106中哪里。在這方面,ccm101可以具有存儲器106內的邏輯塊地址(lba)的知識以及那些邏輯塊地址的當前狀態(tài)(例如,被寫入、未被寫入等)。例如,ccm101可以維護標識存儲器106中的所有l(wèi)ba的lba表。至少部分地基于經壓縮的輸出的大小和/或可歸因于輸入數(shù)據(jù)的壓縮比,ccm101然后可以分配存儲器106內的一個或多個lba以用于存儲經壓縮的輸出。

如圖1的點5處所圖示的,ccm101然后可以向高速緩存設備102發(fā)出寫入命令。通常,寫入命令可以被配置為使高速緩存設備102將存儲在緩沖器105中的經壓縮的輸出寫入存儲器106的一個或多個lba。因此,寫入命令可以包括與經壓縮的輸出(和對應輸入數(shù)據(jù))相關聯(lián)的標簽以及經壓縮的輸出要被寫入的一個或多個lba。該概念在圖2a中圖示,其中寫入命令203被圖示為單個命令,所述單個命令包括標簽和與標簽相關聯(lián)的經壓縮的輸出要被寫入的存儲器106中的一個或多個lba。寫入/提交指令(未示出)也可以如期望的被包括在該命令中或者由ccm101單獨傳輸。

現(xiàn)在轉到圖1的點6,dcm103可以被配置為從ccm101接收寫入命令。響應于寫入命令,dcm103可以使高速緩存設備102將與寫入命令中標識的標簽相關聯(lián)的經壓縮的數(shù)據(jù)從緩沖器105寫入到在寫入命令中指定的存儲器106的一個或多個的邏輯塊地址。將經壓縮的數(shù)據(jù)從緩沖器105寫入存儲器106可以以任何先前已知的或將要開發(fā)的方式發(fā)生,并且因此本文并不討論。

為了清楚的緣故,上述討論聚焦于下述實施例:其中ccm101確定存儲在緩沖器105中的經壓縮的輸出將被寫入高速緩存設備102的存儲器106。應當理解,上述討論僅為了示例的緣故,并且存儲在緩沖器105中的經壓縮的輸出不需要總是被寫入高速緩存設備102的存儲器106。實際上,本公開預想到其中ccm101響應于返回消息而確定存儲在緩沖器105中的經壓縮的輸出不被寫入存儲器106的實施例。

通過示例的方式,在一些實施例中,如上所討論的,ccm101可以分析返回消息以確定存儲在緩沖器105中的經壓縮的輸出的大小和/或可歸因于輸入數(shù)據(jù)的壓縮比。在這樣的實施例中,ccm101還可以被配置為至少部分地基于壓縮比和/或經壓縮的輸出的大小來確定是否將經壓縮的輸出寫入存儲器106。例如,ccm101可以將可歸因于輸入數(shù)據(jù)的壓縮比與閾值壓縮比相比較,并且至少部分地基于可歸因于輸入數(shù)據(jù)的壓縮比是否超過閾值壓縮比來確定經壓縮的輸出是否不被寫入存儲器106。替代地或此外,ccm101可以將緩沖器105中的經壓縮的輸出的大小與閾值大小相比較,并且至少部分地基于經壓縮的輸出的大小是否超過閾值大小來確定經壓縮的輸出是否被寫入存儲器106。

在其中ccm101確定經壓縮的輸出不被寫入存儲器106的情況下,ccm101可以向高速緩存設備102(或更具體地,向dcm103)發(fā)出丟棄命令。丟棄命令可以包括例如丟棄指令和標簽。響應于丟棄命令,dcm103可以使高速緩存設備102從緩沖器105清除(purge)與標簽相關聯(lián)的經壓縮的輸出。

如上所討論的,本公開預想到其中ccm101將標簽與要被壓縮的高速緩存行數(shù)據(jù)相關聯(lián)的實施例,dcm103將標簽與存儲在傳遞緩沖器105中的經壓縮的數(shù)據(jù)相關聯(lián),并且ccm發(fā)出包含標簽的寫入命令以將經壓縮的數(shù)據(jù)寫入存儲器106。雖然有用的是應當理解,這樣的實施例是出于示例的緣故,并且本公開預想到其中標簽不用于標識高速緩存行中的數(shù)據(jù)的實施例。例如,ccm101可以被配置為將壓縮命令傳輸?shù)礁咚倬彺嬖O備102,如上所述。然而,與前述實施例不同,壓縮命令可以包含用于壓縮的來自高速緩存行的數(shù)據(jù)/狀態(tài),但是可以不包含標簽。響應于壓縮命令,dcm103可以將數(shù)據(jù)/狀態(tài)轉發(fā)到codec104以供壓縮,此后經壓縮的輸出可以被存儲在傳遞緩沖器105中。然后,dcm103可以向ccm101發(fā)送返回信號、壓縮操作的信令完成和其中存儲經壓縮的輸出的傳遞緩沖器105的位置/標識。

當ccm確定經壓縮的輸出要被寫入存儲器106時,其可以向高速緩存設備102發(fā)出讀取命令。讀取命令可以以傳遞緩沖器105為目標,并且使高速緩存設備102將傳遞緩沖器105的內容提供給高速緩存控制器101。然后,ccm101可以確定從傳遞緩沖器105讀取的數(shù)據(jù)的大小和/或壓縮比,并且分配存儲器106內的邏輯塊地址以用于其存儲。然后,ccm101可以向高速緩存設備102發(fā)出寫入命令,所述寫入命令包括經壓縮的輸出和存儲器106的所分配的lba。響應于寫入命令,高速緩存設備102可以將經壓縮的輸出寫入在寫入命令中指定的所分配的lba。

如可以領會的,這樣的實施例可以允許ccm101在將經壓縮的輸出寫入存儲器106之前確定經壓縮的輸出的大小和/或壓縮比,而同時避免與生成和跟蹤針對每個高速緩存行的標簽相關聯(lián)的開銷,不過潛在地以在可以發(fā)送附加數(shù)據(jù)之前必須等待壓縮在針對給定高速緩存行的狀態(tài)上完成為代價。

如前所述,本公開的高速緩存系統(tǒng)被包括在一個或多個高速緩存設備和/或電子設備中,例如并且可以對一個或多個存儲設備進行高速緩存。該概念在圖5a中圖示,其描繪了包括與本公開一致的高速緩存系統(tǒng)的電子設備的框圖。如所示,電子設備500包括設備平臺501、處理器502、存儲設備503、高速緩存設備(在該情況下的ssd504)、輸入/輸出接口/設備505(例如,鍵盤、鼠標、無線網(wǎng)絡接口等)、顯示器506以及一個或多個天線507。ssd504包括高速緩存系統(tǒng)100,其進一步細節(jié)在圖5b中示出。利用ssd504訪問經壓縮的高速緩存行可以至少部分地確定平臺501的一個或多個其他操作——例如,包括用顯示器506顯示圖像、與一個或多個天線507的無線網(wǎng)絡通信等。

電子設備500可以是任何適當?shù)碾娮釉O備,諸如上述的電子設備。因此,可以用作電子設備500的電子設備的非限制性示例包括任何種類的移動設備和/或固定設備,諸如相機、蜂窩電話、計算機終端、臺式計算機、電子閱讀器、傳真機、信息亭、上網(wǎng)本計算機、筆記本計算機、互聯(lián)網(wǎng)設備、支付終端、個人數(shù)字助理、媒體播放器和/或記錄器、服務器(例如,刀片服務器、機架安裝服務器、其組合等)、機頂盒、智能電話、平板個人計算機、超移動個人計算機、有線電話、其組合等。這樣的設備可以是便攜式的或固定的。在一些實施例中,本文描述的技術可以在臺式計算機、膝上型計算機、智能電話、平板計算機、上網(wǎng)本計算機、筆記本計算機、個人數(shù)字助理、服務器、其組合中采用。

設備平臺可以是任何適當?shù)脑O備平臺,并且在一些實施例中與用作電子設備500的電子設備的類型相關。因此,例如在電子設備500是智能電話、筆記本計算機、臺式計算機、服務器等的情況下,設備平臺501可以尊敬地以智能電話平臺、筆記本計算機平臺、臺式計算機平臺、服務器平臺的形式。當然,這樣的設備平臺僅僅是為了示例的緣故,并且任何適當?shù)脑O備平臺可以用作設備平臺501。

處理器502可以是任何適當?shù)耐ㄓ锰幚砥骰驅S眉呻娐?,并且可以能夠在一個或多個處理器核上執(zhí)行一個或多個線程。在沒有限制的情況下,在一些實施例中,處理器502是通用處理器,諸如但不限于可從intel?公司、advancedmicrodevices?、arm?、nvidia?、apple?和samsung?商業(yè)獲得的通用處理器。盡管圖5a將電子設備500圖示為包括單個處理器502,但是可以使用多個處理器。

存儲設備503可以是任何適當?shù)拇鎯υO備,諸如但不限于上述存儲設備。在沒有限制的情況下,在一些實施例中,存儲設備503以ssd、硬盤驅動器、帶存儲器、其組合等的形式。在一些實施例中,存儲設備503可以表現(xiàn)出比在電子設備500中使用的高速緩存設備(在該情況下,ssd504)的輸入輸出性能更慢的輸入輸出性能。

現(xiàn)在參考圖5b,其提供了圖5a中的ssd504和電子設備500的其他部件的進一步細節(jié)。如圖5b中所示,ssd504可以例如經由接口505與(設備平臺501的)總線508通信。在這方面,任何適當?shù)目偩€可以用作總線508,并且任何適當?shù)慕涌诳梢杂米鹘涌?05。在沒有限制的情況下,在一個實施例中,總線508是串行高級技術附連(sata)總線,并且接口505是sata接口。如圖5b中進一步所示,ssd504可以包括高速緩存控制器模塊(ccm)101、數(shù)據(jù)壓縮模塊(dcm)103、codec104、緩沖器105和存儲器106。為了圖示的緣故,ccm101、dcm103和codec104被示出為ssd504的單獨的元件,但是應當理解,這樣的配置不是必需的。實際上,在一些實施例中,這樣的元件中的一個或組合可以被集成或以其他方式被包括在ssd504的ssd控制器(未示出)中。

在操作中,總線508可以將數(shù)據(jù)(例如,從處理器502)攜帶到ssd504。ssd504可以例如經由接口505接收數(shù)據(jù)。然后,接收到的數(shù)據(jù)可以被傳遞到ccm101。此時,ccm101可以應用一個或多個高速緩存策略來確定數(shù)據(jù)的全部或一部分是否被寫入存儲器106。如果是,則如前所討論的,ccm101可以將數(shù)據(jù)劃分成一個或多個高速緩存行,并且將高速緩存行中的一個或多個(可選地標記有標簽)發(fā)送到dcm103以供壓縮。如上所討論的,dcm103可以將數(shù)據(jù)(輸入數(shù)據(jù))發(fā)送到codec104以供壓縮。codec104可以壓縮輸入數(shù)據(jù)以產生存儲在緩沖器105中的輸出。

然后,ccm101可以確定經壓縮的輸出的大小和/或可歸因于輸入數(shù)據(jù)的壓縮比,并且可以應用一個或多個高速緩存策略來確定經壓縮的輸出是否要被寫入到存儲器106。如前所討論的,可以至少部分地基于經壓縮的輸出的大小和/或可歸因于輸入數(shù)據(jù)的壓縮比來預測決定。當經壓縮的輸出要被寫入存儲器106時,ccm101可以分配存儲器106中的至少一個邏輯塊地址范圍以用于存儲經壓縮的輸出。然后,ccm101可以向ssd504的盤控制器(未示出)發(fā)送寫入命令,其中寫入命令使控制器將存儲在緩沖器105中的經壓縮的輸出寫入由ccm101分配的存儲器106的(一個或多個)邏輯塊地址范圍。替代地,在ccm101與ssd504的盤控制器成整體或以ssd504的盤控制器的形式的情況下,ccm101本身可以使緩沖器105中的經壓縮的輸出被寫入到存儲器106的(一個或多個)所分配的邏輯塊地址范圍。類似地,在經壓縮的輸出不被寫入存儲器106的情況下,ccm101可以發(fā)出丟棄命令,所述丟棄命令使經壓縮的輸出被從緩沖器105中清除,例如在其被寫入存儲器106之前。

本公開的另一方面涉及對數(shù)據(jù)進行高速緩存的方法。在這方面,參考圖3,圖3是根據(jù)與本公開一致的對數(shù)據(jù)進行高速緩存的示例性方法的高速緩存控制器設備(諸如高速緩存控制器模塊101)的示例性操作的流程圖。如所示,方法300可以包括,在310處,傳輸包括第一數(shù)據(jù)的第一壓縮命令。第一壓縮命令可以在310處被傳輸?shù)桨▔嚎s引擎的設備,該壓縮引擎響應于第一壓縮命令而壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù)。在實施例中,執(zhí)行方法300的高速緩存控制器存儲將第一數(shù)據(jù)與第一標簽相關聯(lián)的信息,第一標簽例如可以用于訪問第一數(shù)據(jù)(和/或第一經壓縮的數(shù)據(jù))。例如,第一標簽可以被包括在第一壓縮命令中。

方法300還可以包括,在320處,確定第一經壓縮的數(shù)據(jù)的大小。例如,壓縮引擎可以直接或間接地向高速緩存控制器傳送指定包括第一經壓縮的數(shù)據(jù)的數(shù)據(jù)的位、字節(jié)、塊或其他集合的總數(shù)的信息。替代地或此外,這樣的信息可以指定第一經壓縮的數(shù)據(jù)相對于第一數(shù)據(jù)的壓縮比。

在實施例中,方法300還包括,在330處,標識高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍??梢曰谌缭?20處確定的第一經壓縮的數(shù)據(jù)的大小以及高速緩存控制器中包括或以其他方式對高速緩存控制器可訪問的參考信息來標識第一lba范圍。參考信息可以包括指定高速緩存設備的存儲器的多個lba范圍(本文也稱為槽)的一個或多個表、列表、樹或其他數(shù)據(jù)結構,其中這樣的lba范圍當前均存儲相應的高速緩存行和/或可以用于存儲相應的高速緩存行??梢跃S護這樣的參考信息,以針對多個lba范圍中的每一個來保持跟蹤諸如lba范圍的大小、外圍存儲設備的對應邏輯基址、lba范圍的使用的新近性等之類的信息。一些或所有這樣的信息可以被排序,例如,槽大小、使用的槽新近性等。

通過說明而非限制的方式,參考信息可以標識當前均存儲相應的經壓縮的高速緩存行的一個或多個lba范圍和/或當前不存儲有效的經壓縮的高速緩存行的一個或多個lba范圍。例如,參考信息可以包括標識除了當前存儲有效數(shù)據(jù)的高速緩存存儲器的任何lba范圍之外的一個或多個lba范圍的信息,其中參考信息還針對這樣的一個或多個lba范圍中的每一個標識lba范圍的相應大小。在330處的標識期間,多個lba范圍可以包括不同相應大小的一些lba范圍。

在一個實施例中,針對多個lba范圍中的每一個,參考信息指定該lba范圍的使用的新近性。在330處的標識第一lba范圍可以基于第一lba范圍的使用的新近性——例如,與一個或多個其他lba范圍(例如,均具有等于第一lba范圍的大小的大小)的使用的新近性相比。在330處的標識第一lba范圍可以包括標識從高速緩存存儲器逐出的經壓縮的數(shù)據(jù)——例如包括標識第一lba范圍的相對低的命中率,如與多個lba范圍中的一個或多個其他范圍的命中率相比較的。

在330處的標識第一lba范圍可以包括標識多個lba范圍的子集——例如,基于該子集的lba范圍均具有等于足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的區(qū)段的相應的總數(shù)目。替代地或此外,可以基于子集的lba范圍均具有最接近(并且不小于)足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的(可用lba范圍的)lba范圍的區(qū)段的總數(shù)目來標識多個lba范圍的子集??梢詢H從多個lba范圍的子集之中選擇第一lba范圍——例如,其中這樣的選擇基于第一lba范圍是該子集的最近最少使用的lba范圍。

在330處標識第一lba可以包括劃分由參考信息當前標識的多個lba范圍中的一個lba范圍。lba范圍可以被劃分為例如第一lba范圍和一些其他lba范圍,例如,所述一些其他lba范圍在方法300之后可以不存儲有效數(shù)據(jù)。在這樣的實施例中,lba范圍的劃分可以基于第一經壓縮的數(shù)據(jù)的大小——例如,使得第一lba范圍至少具有最小數(shù)目的區(qū)段以存儲第一經壓縮的數(shù)據(jù)。

方法300還可以包括,在340處,更新參考信息以指示第一lba范圍被分配給第一經壓縮的數(shù)據(jù)。340處的更新可以包括更新多個lba范圍,所述多個lba范圍被指定為包括標識第一lba范圍的信息。替代地或此外,更新可以包括生成或更新表示第一lba范圍的使用的新近性的值。

在實施例中,方法300包括,在350處,用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍。例如,350處的用信號通知可以包括高速緩存控制器向高速緩存存儲器或者直接或間接地操作高速緩存存儲器的其他設備發(fā)出寫入命令、提交命令和/或其他消息。這樣的消息可以包含第一lba范圍的標識符以及在一些實施例中包含標簽,所述標簽被識別為參考第一數(shù)據(jù)(和第一經壓縮的數(shù)據(jù))的索引或其他值。如本文所討論的,耦合到高速緩存控制器的壓縮引擎或其他部件可以在第一經壓縮的數(shù)據(jù)的大小已經被傳送到高速緩存控制器之后臨時存儲第一經壓縮的數(shù)據(jù),并且至少直至高速緩存控制器引擎已經向部件標識部件要向其寫入第一經壓縮的數(shù)據(jù)的特定高速緩存lba范圍為止。替代地,第一經壓縮的數(shù)據(jù)可以被臨時存儲在緩沖器中,其中,在基于第一經壓縮的數(shù)據(jù)的大小而確定高速緩存lba范圍之后,高速緩存控制器從緩沖器讀取第一經壓縮的數(shù)據(jù)并且將其寫入高速緩存lba范圍。

方法300可以包括不同地在圖3中示出的那些操作之前和/或之后的其他操作(未示出),所述其他操作支持其他數(shù)據(jù)的高速緩存。通過說明而非限制的方式,可以針對除了第一數(shù)據(jù)之外的第二數(shù)據(jù)重復操作310至350。這樣的第二數(shù)據(jù)的壓縮可能導致第二經壓縮的數(shù)據(jù),第二經壓縮的數(shù)據(jù)例如具有與第一經壓縮的數(shù)據(jù)的大小不同的大小。高速緩存控制器可以(例如,從壓縮引擎)接收標識第二經壓縮的數(shù)據(jù)的大小的信息,并且作為響應,可以標識高速緩存存儲器的第二lba范圍。可以基于第二經壓縮的數(shù)據(jù)的大小和第二lba范圍的大?。ɡ?,其中第一lba范圍和第二lba范圍具有不同大小)來標識第二lba范圍。基于第二lba范圍的標識,方法300還可以更新參考信息以指示第二lba范圍被分配給第二經壓縮的數(shù)據(jù)。第二經壓縮的數(shù)據(jù)可以被寫入第二lba范圍——例如,其中第一lba范圍存儲第一經壓縮的數(shù)據(jù),而第二lba范圍存儲第二經壓縮的數(shù)據(jù)。

圖2b、2d和2e圖示了根據(jù)實施例的參考信息的一些示例,所述參考信息可被訪問以確定經壓縮的數(shù)據(jù)的高速緩存和/或其他訪問。這樣的參考信息可以被包括在高速緩存控制器(諸如高速緩存控制器模塊101)中或以其他方式對高速緩存控制器可訪問,以用于在確定將經壓縮的數(shù)據(jù)高速緩存到不同大小的相應lba范圍中參考。這種參考信息的特定結構和內容僅僅說明根據(jù)一個實施例的場景,并且可以不限于其他實施例。

如圖2b中所示,參考信息可以包括lba映射210,其定義或以其他方式指定外圍存儲(在該示例中為hdd)的lba每一個到用于外圍存儲的高速緩存的相應lba范圍的對應性。在lba映射210中,高速緩存lba范圍均由lba范圍(在列“高速緩存lba”中)的相應第一lba和存儲(和/或在一些實施例中可用于存儲)經壓縮的數(shù)據(jù)的lba范圍的區(qū)段的總數(shù)目(在列“壓縮大小”中)指示。在由圖2b-2e所表示的說明性情景中,未經壓縮的高速緩存行的大小為4kb(8個lba,其中每個lba為512字節(jié))。

圖2c圖示了由lba映射210中示出的說明性參考信息描述的高速緩存存儲器220的要素。說明性高速緩存存儲器220包括一百個lba,其中在lba映射210中指定的高速緩存存儲器220的lba范圍同時存儲相應的經壓縮的高速緩存行數(shù)據(jù)dlx,每一個對應于在lba映射210中指定的相應hddlba范圍lx。當高速緩存控制器操作為從高速緩存存儲器220的lba范圍中不同地逐出經壓縮的數(shù)據(jù)、讀取高速緩存存儲器220的lba范圍的經壓縮的數(shù)據(jù)和/或向高速緩存存儲器220的lba范圍寫入經壓縮的數(shù)據(jù)時,lba映射210和/或其他這樣的參考信息可以被更新以反映這樣的訪問。這可以包括更新lba映射210以標識更多或更少的lba范圍、對高速緩存lba范圍的大小的改變和/或高速緩存lba范圍到hdd范圍的對應性的改變。

參考信息可以此外或替代地針對一個或多個lba范圍中的每一個指示lba范圍的使用的相應新近性。這樣的新近性信息的一個示例由圖2d的說明性最近最少使用(lru)列表230表示。lru列表230可以根據(jù)其相應的大小并且在一些實施例中進一步根據(jù)在相同大小的槽之間的使用的相對新近性來布置槽(lba范圍)的列表。在實施例中,高速緩存控制器可以標識要被高速緩存的經壓縮的數(shù)據(jù)的大小,并且基于該大小,訪問對應于該大小的lru列表230中的列表。從所選擇的列表中,可以選擇優(yōu)選的槽作為用于對經壓縮的數(shù)據(jù)進行高速緩存的槽。使用的新近性可以指代自從給定槽已經被寫入、從其讀取、更新和/或以其他方式被訪問以來的時間的持續(xù)時間。

在實施例中,參考信息可以此外或替代地指定可以空閑(free)以存儲經壓縮的數(shù)據(jù)的一個或多個lba范圍。這樣的參考信息的一個示例由圖2e的說明性的空閑槽列表240表示。空閑槽列表240可以根據(jù)其相應的大小來布置空閑槽(例如當前沒有存儲有效數(shù)據(jù))的列表。在實施例中,高速緩存控制器可以標識要被高速緩存的經壓縮的數(shù)據(jù)的大小,并且基于該大小,將空閑槽列表240中列出的槽確定為對應于該大小。從該大小的空閑槽中,可以選擇一槽作為用于對經壓縮的數(shù)據(jù)進行高速緩存的槽。

在逐出ssd(或用作高速緩存的其他設備)上的干凈(clean)高速緩存行時,在實施例中,高速緩存行可以被簡單地標記為經修剪的(trimmed),并且lba映射210和lru列表230被更新以移除對逐出的高速緩存行的參考。經修剪的空間可以被添加到空閑槽列表240。在逐出臟高速緩存行時,可以從高速緩存(如在讀取命中時)讀取經壓縮的數(shù)據(jù)、寫入hdd(或其他外圍存儲),并且然后使用干凈逐出過程。在讀取和寫入未命中時,高速緩存控制器可以(例如至少部分地基于常規(guī)的高速緩存決定準則)決定是否將數(shù)據(jù)插入高速緩存中。如果它選擇插入數(shù)據(jù),則可以使用本文討論的插入過程。在讀取命中時,可以在lba映射210中查找對應的高速緩存lba范圍連同經壓縮的大小,并且可以向針對數(shù)據(jù)的高速緩存發(fā)出對應讀取請求??梢韵鄳馗耹ru列表230中的對應一個。在寫入命中時,高速緩存可能需要更新高速緩存中的數(shù)據(jù)。因為新數(shù)據(jù)可能與舊數(shù)據(jù)不同地壓縮,所以高速緩存可能并不總是能夠簡單地在原位(inplace)更新數(shù)據(jù)。因此,高速緩存可以被操作成壓縮新數(shù)據(jù)并確定經壓縮的大小,例如,如本文所討論的。如果新的經壓縮的大小和舊的經壓縮的大小需要相同最小數(shù)目的區(qū)段(使用lba映射210中的查找確定的),則可以在原位更新數(shù)據(jù)。否則,高速緩存必須使用針對舊數(shù)據(jù)的逐出過程,之后是基于新的經壓縮的數(shù)據(jù)大小的新的插入過程。

現(xiàn)在參考圖4,圖4是與本公開一致的壓縮數(shù)據(jù)的一個示例性方法400一致的數(shù)據(jù)壓縮模塊的示例性操作的流程圖。例如,方法400可以用具有高速緩存設備102的一些或全部特征的邏輯來執(zhí)行。這樣的邏輯可以與執(zhí)行方法300的高速緩存控制器一起操作。

如所示,方法400可以包括,在410處,壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù),第一數(shù)據(jù)由數(shù)據(jù)壓縮模塊從高速緩存控制器接收。在實施例中,方法400包括,在420處,向高速緩存控制器發(fā)送指示第一經壓縮的數(shù)據(jù)的大小的信息。在420處發(fā)送的信息可以包括指定第一經壓縮的數(shù)據(jù)的大小的值和/或基于在410處執(zhí)行的壓縮而確定的壓縮因子。在實施例中,高速緩存控制器基于第一經壓縮的數(shù)據(jù)的大小和第一lba范圍的大小來標識高速緩存存儲器的第一lba范圍。例如,第一lba范圍可以是在330處標識的第一lba范圍。方法400還可以包括,在430處,基于高速緩存控制器接收到指示第一經壓縮的數(shù)據(jù)的大小的信息來將第一經壓縮的數(shù)據(jù)寫入第一lba范圍。例如,高速緩存控制器可以向執(zhí)行方法400的設備標識第一lba作為用于寫入第一經壓縮的數(shù)據(jù)的目的地。

方法400還可以包括,在440處,壓縮第二數(shù)據(jù)以產生第二經壓縮的數(shù)據(jù),第二數(shù)據(jù)由數(shù)據(jù)壓縮模塊從高速緩存控制器接收。在實施例中,方法400包括,在450處,向高速緩存控制器發(fā)送指示第二經壓縮的數(shù)據(jù)的大小的信息。在450處發(fā)送的信息可以包括指定第二經壓縮的數(shù)據(jù)的大小的值和/或基于在440處執(zhí)行的壓縮而確定的壓縮因子。在實施例中,高速緩存控制器基于第二經壓縮的數(shù)據(jù)的大小和第二lba范圍的大小來標識高速緩存存儲器的第二lba范圍。方法400還可以包括,在460處,基于高速緩存控制器接收到指示第二經壓縮的數(shù)據(jù)的大小的信息而將第二經壓縮的數(shù)據(jù)寫入第二lba范圍。例如,高速緩存控制器可以向執(zhí)行方法400的設備標識第二lba作為用于寫入第一經壓縮的數(shù)據(jù)的目的地。在實施例中,第一lba存儲第一經壓縮的數(shù)據(jù),而第二lba存儲該第二經壓縮的數(shù)據(jù)——例如,其中第一lba和第二lba具有不同的相應大小,并且第一經壓縮的數(shù)據(jù)和第二經壓縮的數(shù)據(jù)具有不同的相應大小。

在一個實現(xiàn)中,一種設備包括高速緩存控制器模塊,所述高速緩存控制器模塊包括電路,所述電路被配置為向壓縮引擎?zhèn)鬏敯ǖ谝粩?shù)據(jù)的第一壓縮命令,其中,響應于第一壓縮命令,所述壓縮引擎壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù);確定第一經壓縮的數(shù)據(jù)的大?。粯俗R高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,其中,基于第一經壓縮的數(shù)據(jù)的大小和指定所述存儲器的多個lba范圍的參考信息來標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍?;诘谝籰ba范圍的標識,所述高速緩存控制器模塊還要更新所述參考信息以指示第一lba范圍被分配給第一經壓縮的數(shù)據(jù),并且用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍。

在實施例中,所述高速緩存控制器還要確定除了基于第一壓縮命令而生成的任何經壓縮的數(shù)據(jù)之外的第二經壓縮的數(shù)據(jù)的大小,其中,第二經壓縮的數(shù)據(jù)的大小不同于第一經壓縮的數(shù)據(jù)的大??;以及標識高速緩存設備的存儲器的第二lba范圍,其中,基于第二經壓縮的數(shù)據(jù)的大小和所述參考信息來標識第二lba范圍?;诘诙ba范圍的標識,所述高速緩存控制器模塊要更新所述參考信息以指示第二lba范圍被分配給第二經壓縮的數(shù)據(jù),并且用信號通知第二經壓縮的數(shù)據(jù)要被寫入第二lba范圍,其中,第一lba范圍存儲第一經壓縮的數(shù)據(jù),而第二lba范圍存儲第二經壓縮的數(shù)據(jù)。

在另一實施例中,所述高速緩存控制器模塊還被配置為將第一數(shù)據(jù)與第一標簽相關聯(lián)并且在第一壓縮命令中傳輸?shù)谝粯撕?。在另一實施例中,所述高速緩存控制器模塊要用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍包括所述高速緩存控制器模塊要向所述高速緩存設備發(fā)出包含所述標簽和第一lba范圍的寫入命令。在另一實施例中,所述高速緩存控制器模塊要標識第一lba范圍包括所述高速緩存控制器模塊要標識要從所述存儲器逐出的第二經壓縮的數(shù)據(jù)。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),并且其中,針對所述多個lba范圍中的每一個,其中所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。

在另一實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,并且其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。在另一實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,所述高速緩存控制器模塊要基于第一lba范圍的使用的新近性來標識第一lba范圍。在另一實施例中,所述高速緩存控制器模塊標識第一lba范圍包括:所述高速緩存控制器模塊基于所述多??個lba范圍的子集的lba范圍每一個具有等于足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及所述高速緩存控制器模塊僅從所述子集之中選擇第一lba范圍。在另一實施例中,所述高速緩存控制器模塊要基于第一lba范圍是所述子集的最近最少使用的lba范圍而僅從所述子集之中選擇第一lba范圍。在另一實施例中,所述高速緩存控制器模塊要標識第一lba范圍包括:所述高速緩存控制器模塊要基于所述多??個lba范圍的子集的lba范圍每一個具有最接近足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及所述高速緩存控制器模塊要僅從所述子集之中選擇第一lba范圍。

在另一實現(xiàn)中,一種在高速緩存控制器處的方法包括:向壓縮引擎?zhèn)鬏敯ǖ谝粩?shù)據(jù)的第一壓縮命令,其中,響應于第一壓縮命令,所述壓縮引擎壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù);確定第一經壓縮的數(shù)據(jù)的大?。粯俗R高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,其中,基于第一經壓縮的數(shù)據(jù)的大小和指定所述存儲器的多個lba范圍的參考信息來標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍;以及基于第一lba范圍的標識,更新所述參考信息以指示第一lba范圍被分配給第一經壓縮的數(shù)據(jù);以及用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍。

在實施例中,所述方法還包括確定除了基于第一壓縮命令而生成的任何經壓縮的數(shù)據(jù)之外的第二經壓縮的數(shù)據(jù)的大小,其中,第二經壓縮的數(shù)據(jù)的大小不同于第一經壓縮的數(shù)據(jù)的大??;標識高速緩存設備的存儲器的第二lba范圍,其中,基于第二經壓縮的數(shù)據(jù)的大小和所述參考信息來標識第二lba范圍;以及基于第二lba范圍的標識,更新所述參考信息以指示第二lba范圍被分配給第二經壓縮的數(shù)據(jù);以及用信號通知第二經壓縮的數(shù)據(jù)要被寫入第二lba范圍;其中,第一lba范圍存儲第一經壓縮的數(shù)據(jù),而第二lba范圍存儲第二經壓縮的數(shù)據(jù)。

在另一實施例中,所述方法還包括將第一數(shù)據(jù)與第一標簽相關聯(lián),并且在第一壓縮命令中包括第一標簽。在另一實施例中,用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍包括發(fā)出包含所述標簽和第一lba范圍的寫入命令。在另一實施例中,標識第一lba范圍包括標識要從所述存儲器逐出的第二經壓縮的數(shù)據(jù)。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),并且其中,針對所述多個lba范圍中的每一個,并且所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。

在另一實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。在另一實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,標識第一lba范圍是基于第一lba范圍的使用的新近性的。在另一實施例中,標識第一lba范圍包括:基于所述多??個lba范圍的子集的lba范圍每一個具有等于足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及僅從所述子集之中選擇第一lba范圍。在另一實施例中,基于第一lba范圍是所述子集的最近最少使用的lba范圍而僅從所述子集之中選擇第一lba范圍。在另一實施例中,標識第一lba范圍包括:基于所述多??個lba范圍的子集的lba范圍每一個具有最接近足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及僅從所述子集之中選擇第一lba范圍。

在另一實現(xiàn)中,一種其上存儲有指令的計算機可讀存儲介質,所述指令在由一個或多個處理單元執(zhí)行時,使高速緩存控制器實行方法,所述方法包括:向壓縮引擎?zhèn)鬏敯ǖ谝粩?shù)據(jù)的第一壓縮命令,其中,響應于第一壓縮命令,所述壓縮引擎壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù);確定第一經壓縮的數(shù)據(jù)的大小;以及標識高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,其中,基于第一經壓縮的數(shù)據(jù)的大小和指定所述存儲器的多個lba范圍的參考信息而標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍。所述方法還包括:基于第一lba范圍的標識,更新所述參考信息以指示第一lba范圍被分配給第一經壓縮的數(shù)據(jù);以及用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍。

在實施例中,所述方法還包括確定除了基于第一壓縮命令而生成的任何經壓縮的數(shù)據(jù)之外的第二經壓縮的數(shù)據(jù)的大小,其中,第二經壓縮的數(shù)據(jù)的大小不同于第一經壓縮的數(shù)據(jù)的大小;以及標識高速緩存設備的存儲器的第二lba范圍,其中,基于第二經壓縮的數(shù)據(jù)的大小和所述參考信息來標識第二lba范圍。所述方法還包括基于第二lba范圍的標識,更新所述參考信息以指示第二lba范圍被分配給第二經壓縮的數(shù)據(jù);以及用信號通知第二經壓縮的數(shù)據(jù)要被寫入第二lba范圍;其中,第一lba范圍存儲第一經壓縮的數(shù)據(jù),而第二lba范圍存儲第二經壓縮的數(shù)據(jù)。

在另一實施例中,所述方法還包括將第一數(shù)據(jù)與第一標簽相關聯(lián),并且在第一壓縮命令中包括第一標簽。在另一實施例中,用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍包括發(fā)出包含所述標簽和第一lba范圍的寫入命令。在另一實施例中,標識第一lba范圍包括標識要從所述存儲器逐出的第二經壓縮的數(shù)據(jù)。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),并且其中,針對所述多個lba范圍中的每一個,并且所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。

在另一實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。在另一實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,標識第一lba范圍是基于第一lba范圍的使用的新近性的。在另一實施例中,標識第一lba范圍包括:基于所述多??個lba范圍的子集的lba范圍每一個具有等于足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及僅從所述子集之中選擇第一lba范圍。在另一實施例中,基于第一lba范圍是所述子集的最近最少使用的lba范圍而僅從所述子集之中選擇第一lba范圍。在另一實施例中,標識第一lba范圍包括:基于所述多??個lba范圍的子集的lba范圍每一個具有最接近足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及僅從所述子集之中選擇第一lba范圍。

在另一實現(xiàn)中,一種系統(tǒng)包括高速緩存設備,所述高速緩存設備包括存儲器和壓縮;耦合到高速緩存設備的高速緩存控制器,所述高速緩存控制器包括電路,所述電路被配置為向壓縮引擎?zhèn)鬏敯ǖ谝粩?shù)據(jù)的第一壓縮命令,其中,響應于第一壓縮命令,所述壓縮引擎壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù);確定第一經壓縮的數(shù)據(jù)的大??;以及標識所述高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,其中,基于第一經壓縮的數(shù)據(jù)的大小和指定所述存儲器的多個lba范圍的參考信息來標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍?;诘谝籰ba范圍的標識,所述高速緩存控制器還要更新所述參考信息以指示第一lba范圍被分配給第一經壓縮的數(shù)據(jù);以及用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍。

在實施例中,所述高速緩存控制器還要確定除了基于第一壓縮命令而生成的任何經壓縮的數(shù)據(jù)之外的第二經壓縮的數(shù)據(jù)的大小,其中,第二經壓縮的數(shù)據(jù)的大小不同于第一經壓縮的數(shù)據(jù)的大??;標識高速緩存設備的存儲器的第二lba范圍,其中,基于第二經壓縮的數(shù)據(jù)的大小和所述參考信息來標識第二lba范圍;以及基于第二lba范圍的標識,更新所述參考信息以指示第二lba范圍被分配給第二經壓縮的數(shù)據(jù);以及用信號通知第二經壓縮的數(shù)據(jù)要被寫入第二lba范圍;其中,第一lba范圍存儲第一經壓縮的數(shù)據(jù),而第二lba范圍存儲第二經壓縮的數(shù)據(jù)。

在另一實施例中,所述高速緩存控制器還被配置為將第一數(shù)據(jù)與第一標簽相關聯(lián)并且在第一壓縮命令中傳輸?shù)谝粯撕灐T诹硪粚嵤├?,所述高速緩存控制器要用信號通知第一經壓縮的數(shù)據(jù)要被寫入第一lba范圍包括所述高速緩存控制器要向所述高速緩存設備發(fā)出包含所述標簽和第一lba范圍的寫入命令。在另一實施例中,所述高速緩存控制器要標識第一lba范圍包括所述高速緩存控制器要標識要從所述存儲器逐出的第二經壓縮的數(shù)據(jù)。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),其中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。在另一實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,并且其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。

在另一實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,所述高速緩存控制器要基于第一lba范圍的使用的新近性來標識第一lba范圍。在另一實施例中,所述高速緩存控制器要標識第一lba范圍包括:所述高速緩存控制器要基于所述多??個lba范圍的子集的lba范圍每一個具有等于足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及所述高速緩存控制器要僅從所述子集之中選擇第一lba范圍。在另一實施例中,所述高速緩存控制器要基于第一lba范圍是所述子集的最近最少使用的lba范圍而僅從所述子集之中選擇第一lba范圍。在另一實施例中,所述高速緩存控制器要標識第一lba范圍包括:所述高速緩存控制器要基于所述多??個lba范圍的子集的lba范圍每一個具有最接近足以存儲第一經壓縮的數(shù)據(jù)的區(qū)段的最小數(shù)目的所述lba范圍的區(qū)段的總數(shù)目而標識所述子集;以及所述高速緩存控制器要僅從所述子集之中選擇第一lba范圍。

在另一實現(xiàn)中,一種高速緩存存儲器設備包括數(shù)據(jù)壓縮模塊,所述數(shù)據(jù)壓縮模塊包括電路,所述電路被配置為壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù),第一數(shù)據(jù)是由數(shù)據(jù)壓縮模塊從高速緩存控制器接收的,向所述高速緩存控制器發(fā)送指示第一經壓縮的數(shù)據(jù)的大小的信息,其中所述高速緩存控制器基于第一經壓縮的數(shù)據(jù)的大小和第一lba范圍的大小來標識高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,基于所述高速緩存控制器接收到指示第一經壓縮的數(shù)據(jù)的大小的信息而將第一經壓縮的數(shù)據(jù)寫入第一lba范圍,以及壓縮第二數(shù)據(jù)以產生第二經壓縮的數(shù)據(jù),第二數(shù)據(jù)是從所述高速緩存控制器接收的。所述數(shù)據(jù)壓縮模塊還要向所述高速緩存控制器發(fā)送指示第二經壓縮的數(shù)據(jù)的大小的信息,其中所述高速緩存控制器基于第二經壓縮的數(shù)據(jù)的大小和第二lba范圍的大小來標識高速緩存設備的存儲器的第二lba范圍,其中第二lba范圍的大小不同于第一lba范圍的大小,并且基于所述高速緩存控制器接收到指示第二經壓縮的數(shù)據(jù)的大小的信息而將第二經壓縮的數(shù)據(jù)寫入第二lba范圍。

在實施例中,所述高速緩存控制器基于指定所述存儲器的多個lba范圍的參考信息來標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),其中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。在實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,并且其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。在實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,所述高速緩存控制器模塊要基于第一lba范圍的使用的新近性來標識第一lba范圍。

在另一實現(xiàn)中,一種在高速緩存存儲器設備處的方法包括:壓縮第一數(shù)據(jù)以產生第一經壓縮的數(shù)據(jù),第一數(shù)據(jù)是由數(shù)據(jù)壓縮模塊從高速緩存控制器接收的,向所述高速緩存控制器發(fā)送指示第一經壓縮的數(shù)據(jù)的大小的信息,其中所述高速緩存控制器基于第一經壓縮的數(shù)據(jù)的大小和第一lba范圍的大小來標識高速緩存設備的存儲器的第一邏輯塊地址(lba)范圍,基于所述高速緩存控制器接收到指示第一經壓縮的數(shù)據(jù)的大小的信息而將第一經壓縮的數(shù)據(jù)寫入第一lba范圍。所述方法還包括壓縮第二數(shù)據(jù)以產生第二經壓縮的數(shù)據(jù),第二數(shù)據(jù)是從所述高速緩存控制器接收的,向所述高速緩存控制器發(fā)送指示第二經壓縮的數(shù)據(jù)的大小的信息,其中所述高速緩存控制器基于第二經壓縮的數(shù)據(jù)的大小和第二lba范圍的大小來標識高速緩存設備的存儲器的第二lba范圍,其中第二lba范圍的大小不同于第一lba范圍的大小,并且基于所述高速緩存控制器接收到指示第二經壓縮的數(shù)據(jù)的大小的信息而將第二經壓縮的數(shù)據(jù)寫入第二lba范圍。

在實施例中,所述高速緩存控制器基于指定所述存儲器的多個lba范圍的參考信息來標識第一lba范圍,所述多個lba范圍包括不同相應大小的lba范圍。在另一實施例中,除了所述高速緩存設備之外的存儲設備存儲第一數(shù)據(jù)的版本,而第一lba范圍存儲第一經壓縮的數(shù)據(jù),并且其中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的大小以及如對應于所述lba范圍的所述存儲設備的不同的相應邏輯基址。在另一實施例中,所述參考信息標識除了當前存儲有效數(shù)據(jù)的所述存儲器的任何lba范圍之外的一個或多個lba范圍,并且其中,所述參考信息還針對所述一個或多個lba范圍中的每一個標識所述lba范圍的相應大小。在另一實施例中,針對所述多個lba范圍中的每一個,所述參考信息指定所述lba范圍的使用的新近性,其中,所述高速緩存控制器模塊要基于第一lba范圍的使用的新近性來標識第一lba范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1