TWI596603B - 用於快取壓縮資料之設備、系統及方法 - Google Patents
用於快取壓縮資料之設備、系統及方法 Download PDFInfo
- Publication number
- TWI596603B TWI596603B TW104136212A TW104136212A TWI596603B TW I596603 B TWI596603 B TW I596603B TW 104136212 A TW104136212 A TW 104136212A TW 104136212 A TW104136212 A TW 104136212A TW I596603 B TWI596603 B TW I596603B
- Authority
- TW
- Taiwan
- Prior art keywords
- lba
- compressed data
- lba range
- cache
- size
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明涉及快取技術。特別地是,本發明涉及採用資料壓縮的碟式快取技術。
電子裝置,諸如桌上型電腦、膝上型電腦、智慧型手機、平板電腦、和類似物常常包括一個或多個週邊儲存裝置。例如,一桌上型電腦可包括一硬碟(HDD),其包含有一磁性記錄媒體(碟)被配置成持久地儲存資料。儘管是有用的,但一HDD的該輸入/輸出(例如,讀出/寫入)效能相比於該裝置之其他組件的效能可能是相對較慢的。因此HDD和其他相對較慢的儲存裝置(例如,磁帶記憶體)會是它/它們被安裝在其中之該電子裝置的該效能瓶頸。儘管許多嘗試已經被提出以提高其效能,但HDD的電氣-機械性質會實際限制了其效能可被改善的程度。
減輕由一相對緩慢之週邊記憶體裝置所呈現瓶頸的一種方法是使用一種快取裝置(在此也被稱為是一「快取」)。在一般情況下,一快取裝置係一記憶體裝置其邏輯上駐於一相對緩慢的儲存裝置和一電子裝置的其他組件諸
如一處理器之間。典型上,一快取包含有記憶體,其比起與該快取裝置相關聯之該相對緩慢裝置是相對較快的。該快取裝置的該記憶體可以當作用於該週邊儲存裝置的一臨時儲存區域。舉例來說頻繁存取(「熱門的」)資料在它被最初存取之後,例如,從該相對緩慢的儲存裝置存取之後,可以被放置在該快取中。之後對該熱門資料的後續存取可以向該快取取得,而不是向該相對較慢的儲存裝置取得。一快取控制器可使用一個或多個演算法和/或策略來確定那一個資料被儲存在該快取裝置的記憶體中,和決定那一個要被移除。因為該快取比該相對較慢儲存裝置更快,故該系統的輸入/輸出效能可以得到改進。
雖然快取裝置能夠緩解由相對較慢的週邊儲存裝置所帶來的效能瓶頸,但快取記憶體往往是相當昂貴的。因此一快取的該大小會由成本和/或其他方面的考慮來限制。因此,可被儲存在一快取中的該資料量實際會受限於它的記憶體的該大小。
依據本發明之一實施例,係特地提出一種裝置,其包含有:一包含有電路的快取控制器模組,該電路被配置成可以:把包含有第一資料之一第一壓縮命令傳送給一壓縮引擎,其中回應於該第一壓縮命令,該壓縮引擎壓縮該第一資料以產生第一經壓縮資料;判定該第一經壓縮資料的大小;識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,其中該第一LBA範圍係基於該第一經壓縮
資料的該大小和指出該記憶體之數個LBA範圍的參考資訊來被識別的,該等數個LBA範圍包含有各自不同大小的LBA範圍;以及基於該第一LBA範圍的識別,以:更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料;以及發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍。
100‧‧‧快取系統
101‧‧‧快取控制器模組
102‧‧‧快取裝置
103‧‧‧資料壓縮模組
104‧‧‧CODEC
105‧‧‧緩衝器
106‧‧‧記憶體
107‧‧‧狀態資訊
201‧‧‧壓縮命令
202‧‧‧傳回訊息
203‧‧‧寫入命令
210‧‧‧LBA映射
220‧‧‧快取記憶體
230‧‧‧LRU列表
240‧‧‧自由槽列表
300‧‧‧方法
310~350‧‧‧方塊
400‧‧‧方法
410~460‧‧‧方塊
500‧‧‧電子裝置
501‧‧‧裝置平台
502‧‧‧處理器
503‧‧‧儲存裝置
504‧‧‧SSD
505‧‧‧I/O
506‧‧‧顯示器
507‧‧‧天線
508‧‧‧匯流排
在該等附圖的該等圖示中,本發明的各種實施例係透過舉例的方式被圖示出,而不是透過限制性的方式被圖示出,其中:圖1根據一實施例係一高階方塊圖,其圖示出一快取系統的元件。
圖2A根據一各別的實施例圖示出在一快取系統中每一種不同命令的元素。
圖2B根據一實施例圖示出被存取的參考資訊以決定資料快取操作。
圖2C根據一實施例示圖示一資料快取以提供對壓縮資料的存取。
圖2D和2E根據一各自的實施例圖示出各種參考資訊,每一個被存取來決定資料快取操作。
圖3根據一實施例係一流程圖,其圖示出一種用於控制一快取之方法的步驟。
圖4根據一實施例係一流程圖,其圖示出一種用於提供資料壓縮資訊給一快取之方法的步驟。
圖5A和5B係一示例電子裝置的方塊圖,其包含有與本發明一致的一種快取系統。
本文所討論的實施例多方面地提供技術和/或機制來改善對儲存在一快取記憶體中壓縮資料的存取。一些快取結構正開始利用壓縮/解壓縮的功能來增加有效的快取容量,同時對資料存取時間提供至少一些相對的改善。一般而言,當把將被寫入到一快取之資料壓縮(或解壓縮一將從快取被讀出的資料)所需的額外時間少於把如此資料的一未壓縮版本寫入到該相對緩慢之週邊儲存裝置(或從其讀出如此資料的該未壓縮版本)的時間時,這種功能是很有用的。
傳統的磁碟快取架構把一快取分割成固定大小的快取列(例如,4千位元組(KB)的快取列),其中如此快取列常駐於一快取裝置諸如一固態硬碟(SSD)的一邏輯區塊位址(LBA)範圍中。在這樣的架構中,快取資源被分配成的粒度為一快取列的水平-例如,以該等各別快取列之該預定和固定大小為單位。不幸的是,資料模式的壓縮率不同。在一快取列中一4KB的資料可能壓縮八倍(8x),但下一個4KB可能完全不能壓縮(即,1x)。
舉例來說,傳統具各種不同壓縮之SSD快取包括將一LBA範圍分割成數個槽,每一個槽都具有等於未壓縮快取列之大小的一固定大小。在操作的過程中,根據需要
在快取插入、清空、以及更新上如此的槽以不同的方式被填充、釋放、以及覆寫。因此,這些快取解決方案並不充分的受益於該邏輯式地增大快取容量的至少一部分。某些實施例係一種實現方式的一結果,該實現方式具有固定大小的快取列,快取控制邏輯無法利用至少有一些快取列由於壓縮所提供的使用空間。如此實施例提供的優點包括隨著時間推移有效地增加快取容量以及有更高的快取命中率。
雖然本發明在此的描述係參考用於特定應用之說明性實施例,但應被理解的是,這樣的實施例只是示範性的,並且由所附權利請求項所限定之本發明並不限於此。事實上,為了便於說明的目的,本文所描述的技術可在其中以一固態硬碟作為一儲存裝置,諸如一硬碟或磁帶記憶體,之快取裝置的一個或多個使用模型環境被討論。這樣子的討論僅是示例性的,並且應當被理解的是,在其他的情況下,可以使用本文所描述之技術的全部或一部分。事實上在此所描述的技術可以被使用於任何合適之快取裝置和儲存裝置。相關領域的習知技藝者在接受本文所提供的該等教導後將體認到在本發明範疇內之額外的修改、應用、和實施例,以及一些其他的領域在其中本發明的實施例將會是實用的。
本文所描述的該等技術可在一個或多個電子裝置中被實現。可利用本文所描述該等技術之電子裝置的非限制性示例包括任何類型的行動裝置和/或固定裝置,諸如
照相機、手機、電腦終端、桌上型電腦、電子閱讀器、傳真機、資訊站、上網本電腦、筆記型電腦、網際網路裝置、付款終端機、個人數位助理、媒體播放器和/或錄音機、伺服器(例如,刀鋒伺服器、機架式伺服器、它們的組合、等等)、機上盒、智慧型手機、平板個人電腦、超行動式個人電腦、有線電話、它們的組合、和類似物。這樣子的裝置可以是可攜式的或固定式的。在一些實施例中,本文所描述的該等技術可被使用在一桌上型電腦、膝上型電腦、智慧型手機、平板電腦、上網本電腦、筆記型電腦、個人數位助理、伺服器、它們的組合、和類似物。更一般地說,本文所描述的該等技術可被使用在一快取裝置和儲存裝置之一或兩者可被耦合和/或安裝於其之任何的電子裝置中。
在本文中所用術語「快取裝置」係指被用作為另一記憶體裝置(以下簡稱為「儲存裝置」)之一快取的一種記憶體裝置。儘管本發明聚焦在其中一固態硬碟被用作為一快取裝置的實施例,但是應當被理解的是,這樣子的描述僅是示例性的並且術語「快取裝置」包括可被使用來做為一儲存裝置之一快取之任何類型的記憶體裝置。非限制性地說,在一些實施例中本文所描述的快取裝置的該形式可以係一固態硬碟、動態隨機存取記憶體(DRAM)、一硬碟、一位元組可定址之非依電性記憶體、它們的組合、和類似物。在一些實施例中,本文所描述的該等快取裝置表現出的輸入/輸出(「I/O」)效能會比一相關聯的儲存裝置要高。因此,在一些實施例中,本文所描述的該等快取裝置可包
括一記憶體(在本文也被稱為是「快取記憶體」)其比與該快取裝置相關聯之一儲存裝置的該記憶體要快。
在本文中所用術語「儲存裝置」係指可被使用來持久性地儲存資料的一記憶體裝置。快取裝置的非限制性示例包括硬碟(例如,採用磁記錄媒體的碟)、固態硬碟、磁帶記憶體、它們的組合、和類似物。在一些實施例中,本文所描述之該等儲存裝置的該形式係呈現出I/O效能比一相關聯快取裝置該I/O效能要低之一個或多個記憶體裝置。因此,在一些實施例中,本文所描述的該等儲存裝置可以包括一記憶體(在本文也被稱為「儲存記憶體」)其比與該儲存裝置相關聯之一快取裝置的該記憶體要慢。
如在本文之任何實施例中所使用的,術語「模組」可以指軟體、韌體、電路、和/或它們的組合其被配置成可執行一種或多種與本發明一致的操作。軟體可被具體實現為一軟體套件、程式碼、指令、指令集和/或資料,其被記錄在非暫時性的電腦可讀取儲存媒體上。韌體可被具體實現為被硬編碼(例如,非依電性)在記憶體裝置中的程式碼、指令或指令集和/或資料。「電路」,如在本文之任何實施例中所使用的,可包括,舉例來說,單獨使用或以任何組合的方式使用、固線式電路、可編程電路諸如電腦處理器其包括一個或更多個單獨的指令處理核心、狀態機電路、儲存可由可編程電路來執行之軟體和/或韌體。該等模組可以,集體的或個別的,被具體實現為形成一個或多個電子裝置之一部分的電路,如先前所定義的。在一些實施例中,
本文所描述的一個或多個模組可以是至少部分地係以硬體來實現的邏輯形式以執行一個或多個與本發明一致的功能。
在本文中該等術語「固態硬碟」、「SSD」、「數個SSD」可互換使用以指任何各式各樣的資料儲存裝置,其中積體電路組件(例如,非依電性隨機存取記憶體(NVRAM)組件)被使用來持久性的儲存資料。在任何的情況下,一SSD可以被理解為包括非依電性記憶體諸如NAND或NOR記憶體。
在本文中該等術語「硬碟」和「HDD」可被互換使用來指包含有磁記錄媒體的資料儲存裝置以持久性的儲存資料。該等術語「混合硬碟」和「混合HDD」係指資料儲存裝置,其包括積體電路組件諸如NVRAM和磁性記錄媒體的一種組合。混合HDD包括所謂的「雙碟混合系統」(其中一分開的SSD和HDD,例如,由作業系統或其它控制硬體/軟體組合成一種混合的體積)和「固態混合碟」,其中非依電性記憶體諸如NAND記憶體被併入至一硬碟中。
如在發明背景中所指出的,快取裝置可減輕由相對較慢之週邊儲存裝置所帶來之該效能瓶頸的至少一些。然而成本和/或其他的考量會實際限制可被包括在一快取裝置中的該記憶體大小。因為可被儲存在一快取裝置中的該資料量係由該快取記憶體的該大小來限制,這會在可透過使用快取裝置來達成之該效能改善上會有一種嚴格的限制。
根據上述的考量,將要被儲存在一快取裝置該記憶體中的壓縮資料可以為快取系統提供顯著的好處。舉例來說,資料壓縮可以允許更多的資料被儲存在一快取裝置中而不需要增加其之記憶體容量。然而,不同的考慮使得實際上係難以在許多的快取裝置中實現資料壓縮。
舉例來說,許多快取控制器被配置成可把接收到的資料/狀態分割成一固定大小(例如,4千位元組(KB)、6KB、8KB、等等)的快取列。因此舉例來說,一快取記憶體控制器可能決定一個64KB的狀態應該要被寫入到快取記憶體。要做到這一點,該控制器可把該64KB的狀態分割成十六個4KB的快取列。該控制器然後可以發送一寫入命令到一快取裝置,從而導致把每一個4KB快取列寫入到在該快取記憶體中的儲存區塊。因為包含在該4KB快取列中的狀態係未被壓縮的,該控制器將典型地分配快取記憶體的一個4KB區塊用於儲存。
如以上所述,在一快取裝置中快取記憶體的該容量可藉由在每一個快取列中壓縮資料來實際上的增加。然而,在每一個快取列中的該資料可能壓縮方式不同,例如,由於在包含在其中之資料模式的差異。舉例來說,在一第一快取列中的一資料模式可能壓縮兩倍(意味著該經壓縮資料係該輸入資料大小的一半)、一第二快取列中的一資料模式可能壓縮八倍(意味著該經壓縮資料係該輸入資料大小的八分之一)、而在一第三快取列中的一資料模式可能是完全不能壓縮的(意味著該經壓縮資料和該輸入資料具有
相同的大小)。考慮到這一點,在採用壓縮之先前的快取系統中,該快取記憶體控制器在該經壓縮資料被寫入到快取記憶體之前不知道在一快取列中該經壓縮資料的該大小。在這樣子的系統中的該等控制器因此通常在該快取記憶體中分配該整個的快取列大小,即使在一給定的快取列中該經壓縮資料的該大小小於該整個快取列大小。舉例來說,在一個4KB快取列中的資料可以被壓縮到2KB,但該快取記憶體控制器可能不知道該經壓縮資料的大小。因此,控制器會在該快取記憶體中分配一個4KB區塊用以儲存在該快取列中的該資料,即使該經壓縮資料的大小只有2KB。
採用壓縮之先前的快取系統因此通常無法直接利用由該壓縮所釋放之該額外的空間。沒有利用由壓縮所提供的該等優點,這樣的系統還必須在該經壓縮資料被寫入之後查詢該快取裝置來判定是否該快取記憶體的該大小已經改變和/或判定該快取記憶體該可用的量。
在考量到上述種種,本發明涉及使用資料壓縮的快取技術。如將在下面做詳細描述的,本發明的該等技術包括快取系統和方法其中在一快取列中的資料在被寫入到快取記憶體之前被壓縮。不像採用壓縮之先前的快取系統,本發明的該等技術使得一快取控制器可以在把該經壓縮資料寫入到快取記憶體之前理解在一快取列中資料被壓縮的程度。在一些實施例中,本文所描述的該等快取控制器可至少部分基於該經壓縮資料的該大小、可歸屬於該經壓縮資料(或者其對應之輸入資料)的一壓縮比、或它們的一
種組合來判定該經壓縮資料將被儲存在快取記憶體中的何處。
因此,本發明的一個方面涉及用於快取資料的系統,其也在本文中被稱為是快取系統。應被指出的是,為了清楚和便於理解起見,本文所描述的該等快取系統其描述係獨立於該快取系統會被使用和/或被安裝在其中之一主機裝置和/或系統。但應被理解的是,該等快取系統可被一起使用和/或被安裝在任何合適的主機裝置或系統中,其形式可以是如以上所限定的一電子裝置和/或其一組件,諸如一固態硬碟或被使用作為一個或多個週邊儲存裝置之快取的其他的記憶體裝置。非限制性的說,本文所描述的該等快取系統特別適合用於快取一個或多個儲存裝置,該等儲存裝置被使用於一桌上型電腦、膝上型電腦、行動電話、智慧型手機、平板個人電腦、伺服器、資料中心、它們的組合、等等。更一般地說,本文所描述的該等快取系統可以被實現在任何的裝置中,該等裝置可從快取一相對較慢之週邊儲存裝置而獲益。
在這方面,可參考圖1,其係與本發明一致之一種示例快取系統的一方塊圖。如圖所示,快取系統100包括快取記憶體控制器模組(CCM)101和快取裝置102。
應該注意的是CCM 101被示於圖1中係與快取裝置102分開。應被理解的是,這樣子的圖示只是為了舉例的目的,CCM 101可出現在任何合適的位置上。舉例來說並且如在圖1中所示,在一些實施例中,CCM 101係為一種模
組的形式其與快取裝置102分開。在這種實施例中,CCM 101可被安裝或以其他方式出現在快取系統100與其被使用的一電子裝置中(例如,主機系統,圖中未示出)。在這種情況下,CCM 101可以與快取裝置102進行有線或無線通信。可選擇的是,CCM 101可與快取裝置102整合,例如,如在圖5A和5B所示。舉例來說,CCM 101的形式可以為或包括快取裝置101的一板上快取控制器。在一些實施例中,快取系統100被包含在一固態硬碟中,而CCM 101的形式可為或包括一SSD控制器。
在任何情況下,CCM 101可以是軟體、韌體、硬體、至少部分以硬體來實現的邏輯形式,其被配置成可控制資料/狀態在快取裝置102中的該儲存,或更具體的說,在快取裝置102的記憶體106中的該儲存。CCM 101可因此實現一種或多種已知或未來的快取策略和/或演算法來判定哪些資料/狀態應該被儲存和/或從快取裝置102被移除。可替代的或可附加於如此功能,CCM 101還可被配置成可判定資料/狀態將被儲存在快取裝置102之記憶體106中的何處。如將在後面被詳細描述的,CCM 101可在記憶體106中分配區塊(例如,邏輯區塊位址或LBA)至少部分基於經壓縮資料/狀態的該大小、可歸屬於該經壓縮資料/狀態的一壓縮比、或它們的一種組合。
快取裝置102可以是任何適合用於快取一相對較慢週邊儲存媒體(圖中未示出)的資料儲存裝置。可被用作為快取裝置102之合適的資料儲存裝置的非限制性實例包括
固態硬碟、硬碟、動態隨機存取記憶體(DRAM)裝置、它們的組合、和類似物。符合上述的描述,在一些實施例中快取裝置102可以是可呈現出輸入/輸出(寫入/讀出)效能大於該週邊儲存媒體效能之任何資料儲存裝置,對於該週邊儲存媒體該資料儲存裝置將被使用作為快取。非限制性的說,在一些實施例中,快取裝置102係一固態硬碟的形式。
如圖1所示,快取裝置102包括資料壓縮模組(DCM)103、壓縮解壓縮引擎(CODEC)104、傳輸緩衝器(緩衝器)105、以及記憶體106。DCM 103一般與CCM 101進行通信並致使快取裝置102可執行與本發明一致之資料壓縮操作。關於DCM 103操作之進一步細節將在之後被提供。
壓縮解壓縮引擎CODEC 104通常作用來壓縮接收自CCM 101的資料。具體的說並如下面將被描述的,CODEC 104會從CCM 101接收在一快取列中的資料(或,更具體地說,從DCM 103)。為了清楚起見,由CODEC 104所接收到的該資料被稱為輸入資料。儘管本發明所描述的實施例在其中該CODEC操作來自一單一快取列的輸入資料,但應被理解的是,這樣子的描述是為了舉例的目的而CODEC可以被配置成可操作來自多個快取列的輸入資料。因此舉例來說,CCM 101可把一群資料分割為數個快取列,其每一個都包含輸入資料(例如,4KB、8KB、等等)。CCM 101(或DCM 103)可以把該輸入資料從該等快取列的一個或多個傳送至CODEC 104進行壓縮。取決於其結構,CODEC 104可以一次只操作該等輸入資料組的其中一組
(即,來自一快取列的輸入資料),或它可以同時的操作多組輸入資料((即,來自多個快取列的輸入資料)。
然後CODEC 104可對該輸入資料執行壓縮操作,例如,使用一個或多個壓縮演算法,以便產生一個經壓縮輸出。如可被理解的是,該經壓縮輸出的大小可能不同於該輸入資料的大小。在該經壓縮輸出的大小與該輸入資料之間的該相對差異可由一壓縮比來表示,其在一些實施例可由把該輸入資料的大小除以該經壓縮輸出的大小來表示,或者以相反來表示。因此,舉例來說,如果該輸入資料大小係4KB而該經壓縮輸出大小係2KB,該壓縮比可以是0.5或2,取決於該比率係如何被計算的。
可由CODEC 104所執行之壓縮演算法的非限制性實例包括Lempel-Ziv(LZ)演算法、Deflate演算法、LZR演算法以及它們的組合。當然,這些演算法僅僅是示例性,並且任何合適的壓縮演算法(且特別是無損壓縮演算法)可被使用。非限制性地說,在一些實施例中,CODEC 104在從CCM 101(或者,更具體地,從DCM 103)所接收的資料/狀態上執行Lempel-Ziv演算法。
圖1圖示出了一實施例,其中CODEC 104整合到快取裝置102。應被理解的是,該圖示只是為了舉例的目的,並且該CODEC 104不一定要被整合到快取裝置102。事實上,在本發明設想的實施例中CODEC 104可被儲存和/或實現在任何合適的位置上。舉例來說,CODEC 104可以是由一主機系統,諸如一視訊卡或其他硬體加速器,之其他
的硬體所實現的一種硬體CODEC。可替代的或另外地,CODEC可以是可由,例如,一主機系統之一處理器,所執行的一種軟體CODEC。
不管CODEC 104的特性為何,由CODEC 104所產生知該經壓縮輸出可被儲存在緩衝器105中。因此,緩衝器105可以被配置為可儲存CODEC的該經壓縮輸出105。具體地說,在把該經壓縮輸出寫入到快取裝置102的記憶體106之前,緩衝器105可儲存CODEC的該經壓縮輸出105。如將在後面所描述的,把該經壓縮輸出寫入到記憶體106可以在接收到,例如,來自CCM 101的一資料寫入命令(例如,一寫入命令)時來進行調節。此外,在把該經壓縮輸出交付給記憶體105之前(例如,當該經壓縮輸出被儲存在緩衝器105中時),該經壓縮輸出將被寫入的該位置(例如,在記憶體106中的邏輯區塊位址)可由CCM 101來判定,這將在下面進一步被描述。緩衝器105可因此被理解為是一傳輸緩衝器,其在把該經壓縮輸出交給快取記憶體106之前可儲存CODEC 104的該經壓縮輸出。
緩衝器105可以是任何的記憶體結構,其適合於儲存該經壓縮輸出。可被使用作為緩衝器105之合適記憶體結構的非限制性實例包括靜態隨機存取記憶體(SRAM)、嵌入式動態隨機存取記憶體、它們的組合、和類似物。非限制性地說,在一些實施例中,該緩衝器105的大小約大於或等於接收自CCM 101之該等快取列的大小。因此,舉例來說,在一些實施例中當CCM 101發送4KB快取列給快取裝
置102時,該緩衝器105的大小會約大於或等於4KB。當然,這只是為了舉例的目的而言,緩衝器105可以具任何需要的大小。
記憶體106可以是任何合適類型的電腦可讀取記憶體。可被使用作為記憶體106之示例性記憶體類型包含有但不侷限於:相變記憶體(PCM)、一可位元組定址的三維交叉點記憶體、一電阻式記憶體、奈米線記憶體、鐵電電晶體隨機存取記憶體(FeTRAM)、快閃記憶體諸如NAND或NOR記憶體、合併有憶阻器技術之磁阻隨機存取記憶體(MRAM)記憶體、自旋轉移力矩(STT)-MRAM、磁碟記憶體、光碟記憶體、它們的組合、和類似物。另外地或可替代地,記憶體106可包括電腦可讀取記憶體之其他和/或未來開發的類型。
非限制性地說,在一些實施例中,記憶體106是一種記憶體類型其典型地與使用作為快取裝置102之記憶體裝置該類型相關聯。因此,舉例來說,當快取裝置102係一固態硬碟時,記憶體106可以是非依電性記憶體的形式。同樣地,當快取裝置102係一硬碟時,記憶體106可以是一種磁記錄媒體的形式。非限制性地說,在一些實施例中,快取裝置102係是一SSD的形式,而記憶體106係非依電性記憶體(例如,NAND記憶體)的形式。在任何情況下,記憶體106可被配置成可把資料儲存在一個或多個邏輯區塊中,其可以被定址,例如,用一記憶體控制器或快取裝置102的其他組件。也就是說,記憶體106可包括或被佈置成
數個邏輯區塊位址(LBA),資料/狀態可被儲存於其。作為在本領域中的一般理解,資料可被寫入到記憶體106以回應於一資料寫命令。該資料寫命令可以是一種寫入命令的形式,該命令指定在記憶體106中的該等邏輯區塊位址,與該命令相關聯的資料/狀態將被寫入於其。
為了舉例的目的,本發明現在開始將會描述一快取記系統100實施例的操作,在其中快取裝置102係一SSD形式而記憶體106係非依電性記憶體形式。需要強調的是下面的描述是為了舉例的目的,並且與本例相關聯之該等描述的操作可以以任何合適的快取裝置來使用。
進一步參考圖1,CCM 101可接收來自一資料源的資料,諸如快取系統100可被安裝在其中之主機系統的一處理器或一另一組件。如以上所述,CCM 101可套用一個或多個快取策略以判定該資料的全部或一部分將被寫入到記憶體106。當CCM 101判定該資料的全部或一部分將被寫入到記憶體106時,它會把該要被寫入的資料分配到一個或多個快取列,其大小可以是固定或是可變。非限制性地說,在一些實施例中,該等快取列具有一固定的大小,例如,4KB、6KB、8KB、16KB、32KB、64KB、等等。
CCM 101還可以指派一標籤給在一快取列中的該資料。在一般情況下,該標籤作用為一特定資料單元的一識別碼,在這種情況下,該資料被分配到該等快取列的其中之一。因此,該標籤可以是可適用來唯一地識別與該標籤相關聯之一快取列中該資料的任何格式。因此,舉例
來說,CCM 101可以指派一第一標籤「A」給在一第一快取列中的資料、一第二標籤「B」給在一第二快取列中的資料、等等。與一快取列相關聯之該標籤的性質和格式沒有限制,只要它能夠唯一地識別在該快取列中的該資料即可。因此,舉例來說,該標籤的形式可以是一32位元、64位元、128位元、或256位元的序列號碼、在該快取列中該資料的一雜湊、它們的組合、和類似物。非限制性地說,在一些實施例中,該標籤具有一種64位元序列號碼的形式。
CCM 101然後可以發送在一快取列中的該資料給快取裝置102進行壓縮,正如圖1的點1所說明。在這方面,CCM 101可發送壓縮命令給快取裝置102,例如,以一個或多個有線的或無線的信號。該壓縮命令可以有任何合適的格式,諸如以該串列先進技術附件(SATA)標準或非依電性記憶體特快(NVMe)標準之任何先前的、當前的或未來開發版本之廠商專用命令。NVMe,或非依電性記憶體主機控制器介面規範(NVMHCI),是一種透過該等PCIe匯流排存取附接的SSD的規範。舉例來說,可參見於2014年11月3日所批准的NVM Express Revision 1.2規範並在http://nvmexpress.org可供下載。在任何的情況下,該壓縮命令可以包括該標籤的一份副本、該用於壓縮的輸入資料(即,在一快取列中的該資料)、並可任選地有在該命令中該輸入資料之未壓縮大小的測量。這個概念被示於圖2中,其中壓縮命令201被圖示出為一單一命令的形式其包括該標籤、輸入資料、並任選地有該輸入資料之該未壓縮大小的
一測量。當然該壓縮命令可以根據需要包括其他的元件,諸如但不侷限於一命令標頭。該壓縮命令還可以包括或可以與一個或多個壓縮的指令相關聯,其被配置成可致使CODEC 104對該輸入資料執行壓縮操作。當然,該標籤、資料、和壓縮指令不一定要被包括在相同的命令中,並且根據需要可被包括在不同的命令中。
DCM 103可以直接從CCM 101接收該壓縮命令,或該壓縮命令可以從快取裝置102的其他組件被轉送到DCM 103。在任何的情況下,回應於該壓縮命令DCM 103會轉送接收自快取控制器模組的該輸入資料給CODEC 104進行壓縮。作為回應,CODEC 104會對該輸入資料執行一個或多個壓縮操作,例如,使用一個或多個如前面所述的壓縮演算法。如圖1的點2處所示,CODEC 104可把該所得到的經壓縮輸出儲存在傳輸緩衝器105中。CODEC 104可接著報告該壓縮操作的完成和該經壓縮輸出的位置(例如,緩衝器105的一識別碼、在緩衝器105中的位址範圍、等等)給DCM 103。
如圖1的點3所示,DCM 103可以傳送一傳回訊息給CCM 101。該傳回信號可以包括該指派給該輸入資料的標籤,以及被儲存在DCM 103中該經壓縮輸出大小的測量。這個概念被表示在圖2A中,其中傳回訊息202被圖示為包括該標籤和該經壓縮輸出的大小。因此,在一些實施例中,DCM 103可以測量或以其他方式判定儲存在緩衝器105中該經壓縮輸出的大小,並把該判定的大小包括在一傳回
命令中。可替代地或附加地,CODEC 104可被配置為自動地將該經壓縮資料的大小傳送給DCM 103,例如,在它壓縮該輸入資料之後。
雖然本發明設想的實施例其中DCM 101會自動發出一傳回訊息指出該壓縮後的大小和標籤給CCM 101,本發明的系統不一定要以這種方式進行配置。事實上,在一些實施例中,DCM 103可在收到一來自CCM 101的查詢訊息時調節一傳回訊息的發出。舉例來說,當來自CCM 101該輸入資料由CODEC 104壓縮並被儲存在傳輸緩衝器105中時,DCM 103可維護一筆記錄(例如,一表格或其他種資料結構)其關聯到與接收自CCM 101輸入資料(例如,各種不同的快取列)相關聯的標籤、與該等標籤相關聯之該經壓縮輸出的大小、以及該經壓縮輸出的位置(例如,在緩衝器105中)。然後DCM 101可以等待來自CCM 101之一查詢命令的接收。舉例來說,在一些實施例中CCM 101可以發送一查詢命令給DCM 103,其中該查詢命令包括一查詢指令和一標籤。回應於該查詢命令,DCM 103可以查詢與該標籤相關聯之該經壓縮輸出的大小,和發送一包括該標籤和該經壓縮輸出大小之傳回訊息給CCM 101,如以上所討論的。
在任何的情況下,如圖1的點4所示,CCM 101可接收來自快取裝置102的一傳回訊息(或更具體地說,來自DCM 103)。回應於接收到該傳回訊息,CCM 101可分析該傳回訊息以識別該標籤和該經壓縮資料的大小。透過這個分析,CCM 101可以判定與該標籤相關聯的該輸入資料
被CODEC 104壓縮到何種程度。換句話說,通過分析該傳回訊息,CCM 101可判定儲存在緩衝器105中該經壓縮輸出的大小。由於該經壓縮輸出係與該標籤(在該傳回訊息中)相關聯而該標籤係與該輸入資料(在該壓縮命令中)相關聯,CCM 101可因此判定該經壓縮輸出的大小、和/或該輸入資料被CODEC 104壓縮到何種程度(即,該輸入資料的壓縮比)。
然後CCM 101可決定該經壓縮輸出將要被儲存在記憶體106的何處。在這方面,CCM 101可能知道在記憶體106中的該邏輯區塊位址(LBA),以及那些邏輯區塊位址的目前狀態(例如,為被寫入、未被寫入、等等)。舉例來說,CCM 101可維持一LBA表,其可識別在記憶體106中所有的LBA。至少部分地基於該經壓縮輸出的大小和/或歸屬於該輸入資料的該壓縮比,隨後CCM 101可分配在記憶體106中一個或多個LBA用於儲存該經壓縮輸出。
如圖1的點5所示,然後CCM 101可發出一寫入命令給快取裝置102。一般而言,該寫入命令可被配置以使得快取裝置102可以把儲存在緩衝器105中的一經壓縮輸出寫入到記憶體106之一個或多個LBA。因此,該寫命令可以包括與一經壓縮輸出相關聯的一標籤(和對應的輸入資料)、以及該經壓縮輸出將被寫入至之一個或多個LBA。這個概念被圖示於圖2A中,其中該寫入命令203被圖示為一單一命令其包括一標籤以及在記憶體106中之一個或多個LBA,與該標籤相關聯之該經壓縮輸出將被寫入到其。根據需要,寫
入/提交指令(圖中未示出)也可以被包括在該命令中或由CCM 101個別地傳送出。
現在請見圖1的點6,DCM 103可以被配置為接收來自CCM 101的該寫入命令。回應於該寫入命令,DCM 103會使得快取裝置102可把來自緩衝器105之與該標籤相關聯的該經壓縮資料寫入到記憶體106之該等一個或多個邏輯區塊位址,該標籤係在該寫入命令中被識別而該等邏輯區塊位址係在該寫入命令中被指定。把來自緩衝器105之該經壓縮資料寫入到記憶體106可以用任何先前已知的或待開發的方法來達成,因此不在這裡進行討論。
為了清楚起見,上述討論聚焦於一實施例,其中CCM 101決定儲存在緩衝器105之一經壓縮輸出將被寫入到快取裝置102的記憶體106。應被理解的是,以上的討論僅是為了舉例而進行說明,儲存在緩衝器105之一經壓縮輸出不一定得被寫入到快取裝置102的記憶體106。事實上,在本發明設想的實施例中,CCM 101,回應於一傳回訊息,決定被儲存在緩衝器105之一經壓縮輸出不會被寫入到記憶體106。
以舉例的方式,在一些實施例中,CCM 101可分析一傳回訊息以判定儲存在緩衝器105之一經壓縮輸出的該大小、和/或歸屬於輸入資料的一壓縮比,如以上所討論的。在這種實施例中,CCM 101還可被配置來判定,至少部分地基於該壓縮比和/或該經壓縮輸出的該大小,是否要把該經壓縮輸出寫入到記憶體106。舉例來說,CCM 101可
把歸屬於輸入資料之該壓縮比與一臨界壓縮比進行比較,並至少部分地基於歸屬於該輸入資料的該壓縮比是否超過該臨界壓縮比來判定是否不要把該經壓縮輸出寫入到記憶體106。可替代地或附加地,CCM 101可把在緩衝器105中該經壓縮輸出的大小與一臨界大小比較,並至少部分地基於該經壓縮輸出的大小是否超過該臨界大小來判定該經壓縮輸出是否要被寫入到記憶體106。
在實例中,其中CCM 101判定該經壓縮輸出不被寫入到記憶體106,CCM 101可發出一丟棄命令給快取裝置102(或,更具體地說,給DCM 103)。該丟棄命令可以包括,舉例來說,一丟棄命令和一標籤。回應於該丟棄命令,DCM 103使得該快取裝置102可以從緩衝器105清除與該標籤相關聯的該經壓縮輸出。
如以上所討論的,在本發明所設想實施例中,CCM 101把一標籤相關聯到將被壓縮的快取列資料、DCM 103把該標籤相關聯到儲存在該傳輸緩衝器105中該經壓縮資料、以及CCM發出一包含該標籤的寫入命令以把該經壓縮資料寫入到記憶體106。雖然上述是有用的,應被理解的是,這樣的實施例是為了舉例起見,並且在本發明設想的實施例中標籤不被使用來識別在一快取列中的資料。舉例來說,CCM 101可被配置成發送一壓縮命令給快取裝置102,如以上所述。然而,不同於上述的實施例,該壓縮命令可包含來自一快取列的資料/狀態用於壓縮,但可能不包含一標籤。回應於該壓縮命令,DCM 103可以轉送該資料/
狀態給CODEC 104來壓縮,在其之後該經壓縮輸出可被儲存在該傳輸緩衝器105中。DCM 103然後可以發送一傳回信號給CCM 101,發訊通告該壓縮操作已完成以及該經壓縮輸出被儲存於其中之該傳輸緩衝器105的位置/識別。
當CCM決定該經壓縮輸出將要被寫入到記憶體106時,它可以發出一讀出命令給快取裝置102。該讀出命令可靶向該傳輸緩衝器105,並使得快取裝置102可提供該傳輸緩衝器105內容給快取控制器101。然後CCM 101可判定從傳輸緩衝器105所讀出該資料的該大小和/或壓縮比,並在記憶體106中分配邏輯區塊位址用於其之儲存。然後CCM 101可以發出一寫入命令給快取裝置102,包括該經壓縮輸出和記憶體106之該等分配的LBA。回應於該寫入命令,快取裝置102可以把該經壓縮輸出寫入到指定在該寫入命令中之該等分配的LBA。
如可被理解的,這樣的實施例可讓CCM 101可在把該經壓縮輸出寫入到記憶體106之前判定該經壓縮輸出的大小和/或壓縮比,同時避免有為每一個快取列產生和記錄一標籤相關的開銷,雖然在另外的資料可被發送出之前要付出潛在的代價為必須等待到壓縮完成一給定快取列的狀態。
如前面所指出的,舉例來說,本發明的該等快取系統被包含在一個或多個快取裝置和/或電子裝置中,並且可以快取一個或多個儲存裝置。這個概念被圖示於圖5A中,其圖示出一電子裝置的方塊圖,其包括與本發明一致
之一快取系統。如圖所示,電子裝置500包括裝置平台501、處理器502、儲存裝置503、一快取裝置(在本例的SSD 504)、輸入/輸出介面/裝置505(例如,一鍵盤、滑鼠、無線網路介面等等)、顯示器506以及一個或多個天線507。SSD 504包括一快取系統100,其進一步的細節被圖示於圖5B中。舉例來說,存取SSD 504之一經壓縮快取列可以至少部分地決定平台501之一個或多個其他操作,包括以顯示器506顯示一影像、以一個或多個天線507和/或類似物進行一無線網路通信。
電子裝置500可以是任何合適的電子裝置,諸如上述的電子裝置。可被使用作為電子裝置500之非限制性的實例因此包括任何類型的行動裝置和/或固定裝置,諸如相機、蜂巢式電話、電腦終端、桌上型電腦、電子閱讀器、傳真機、資訊站、上網本電腦、筆記型電腦、網際網路裝置、付款終端、個人數位助理、媒體播放器和/或錄音機、伺服器(例如,刀鋒伺服器、機架式伺服器、它們的組合、等等)、機上盒,智慧型手機、平板個人電腦、超行動個人電腦、有線電話機、它們的組合、以及類似物。這樣的裝置可以是可攜式的或靜止的。在一些實施例中,本文描述的該等技術可被使用在一桌上型電腦、膝上型電腦、智慧型手機、平板電腦、上網本電腦、筆記型電腦、個人數位助理、伺服器、它們的組合、和類似物。
裝置平台可以是任何合適的裝置平台,並且在一些實施例中關聯到被使用做為電子裝置500的該電子裝置
的類型。因此,舉例來說,其中電子裝置500係一智慧型手機、筆記型電腦、桌上型電腦、伺服器、等等,裝置平台501的形式可以分別為一智慧型手機平台、一筆記型電腦平台,一桌上型電腦平台、一伺服器平台。當然,這樣子的裝置平台是只是為了舉例的目的,而且任何適合的裝置平台可被使用作為裝置平台501。
處理器502可以是任何合適的通用處理器或應用特定積體電路,並且能夠在一個或多個處理器核心上執行一個或多個執行緒。非限制性地說,在一些實施例中,處理器502係一通用處理器,諸如但不侷限於可購自INTEL®Corp、ADVANCED MICRO DEVICES®、ARM®、NVIDIA®、APPLE®,和SAMSUNG®之通用處理器。雖然圖5A把電子裝置500圖示出為包含有一單一處理器502,但是多個處理器可被使用。
儲存裝置503可以是任何合適的儲存裝置,諸如但不侷限於以上所提到的該等儲存裝置。非限制性地說,在一些實施例中,儲存裝置503的形式係一SSD、一硬碟、磁帶記憶體、它們的組合、和類似物。在一些實施例中,儲存裝置503所呈現輸入輸出效能會比被使用在電子裝置500中該快取裝置的該輸入輸出效能要慢,在該圖的情況下是SSD 504。
現在參考圖5B,它提供了在圖5A中SSD 504之進一步的細節和電子裝置500的其他組件。如在圖5B中所示,SSD 504可以使用(裝置平台501的)匯流排508,例如,經由
介面505,進行通信。在這方面,任何合適的匯流排可以當作匯流排508,且任何合適的介面可被用作介面505。非限制性地說,在一實施例中匯流排508係一串列先進技術附件(SATA)匯流排,而介面505係一SATA介面。如在圖5B中進一步地示出的,SSD 504可以包括快取控制器模組(CCM)101、資料壓縮模組(DCM)103、CODEC 104、緩衝器105、以及記憶體106。為了說明起見,CCM 101、DCM 103、和CODEC 104被圖示為SSD 504之分離的元件,但是應被理解的是,不一定是這樣的一種配置。事實上,在一些實施例中,這些元件之一種或其組合可以被整合或以其他方式被包含在SSD 504的一SSD控制器(圖中未示出)中。
在操作中,匯流排508可以承載資料(例如,來自處理器502)給SSD 504。SSD 504可以接收資料,例如,通過介面505。該接收到的資料然後可被輸送到CCM 101。在那時,CCM 101可套用一個或多個快取策略來判定資料的全部或部分是否將要被寫入到記憶體106中。如果是這樣,CCM 101可把資料分割一個或數個如前面所討論的快取列,並發送該等快取列的一個或多個(可選擇性地標有一標籤)給DCM 103來壓縮。如以上所述,DCM 103可以發送資料(輸入資料)給CODEC 104來壓縮。CODEC 104可以壓縮該輸入資料以產生一輸出,該輸出被儲存在緩衝器105中。
然後CCM 101可判定該經壓縮輸出的大小和/或歸屬於該輸入資料的一壓縮比,並且可以應用一個或多個快取策略來判定該經壓縮輸出是否要被寫入到記憶體
106。如先前所討論的,這一判定的前提係至少部分地基於該經壓縮輸出的大小和/或歸屬於該輸入資料的該壓縮比。當該經壓縮輸出將被寫入到記憶體106時,CCM 101可分配在記憶體106中的至少一個邏輯區塊位址範圍用於該經壓縮輸出的儲存。CCM 101然後可以發送一寫入命令給SSD 504的一碟控制器(圖中未示出),其中該寫入命令使得該控制器把儲存在緩衝器105的該經壓縮輸出寫入到由CCM 101所分配之記憶體106的該等邏輯區塊位址範圍。可替代地,其中CCM 101係整合於SSD 504的一碟控制器或以其之形式,CCM 101本身可導致在緩衝器105的該經壓縮輸出可被寫入到所分配之記憶體106的該等邏輯區塊位址範圍。同樣地,在該經壓縮輸出將不被寫入到記憶體106的情況下,CCM 101可發出一丟棄命令,導致該經壓縮輸出從緩衝器105被清出,例如,在其被寫入到記憶體106之前。
本發明的另一方面涉及快取資料的方法。在這方面可參考圖3,其是一快取控制器裝置,諸如快取控制器模組101,之示例性操作的一流程圖,根據與本發明一致之一種快取資料的示例方法。如圖所示,方法300可以包括,在310,發送包括第一資料之一第一壓縮命令。該第一壓縮命令會在310被發送到包含有一壓縮引擎之一裝置,其回應於該第一壓縮命令,壓縮該第一資料以產生第一經壓縮資料。在一實施例中,執行方法300的該快取控制器儲存把該第一資料相關聯到一第一標籤的資訊,其舉例來說,可被用來存取該第一資料(和/或該第一經壓縮資料)。該第一標
籤可被包含在該第一壓縮命令中,舉例來說。
方法300還可以包括,在320,判定該第一經壓縮資料的大小。舉例來說,該壓縮引擎可以直接或間接地傳送給該快取控制器資訊,該資訊指定包含該第一經壓縮資料之位元、位元組、區塊或其他資料集的總數量。可替代地或另外地,這樣的資訊可以指定該第一經壓縮資料相對於該第一資料的一壓縮比。
在一實施例中,方法300還包括,在330,識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍。該第一LBA範圍的識別可基於該第一經壓縮資料的該大小,如在320所判定的,以及被包括在其中或以其他方式可由該快取控制器來存取的參考資訊。該參考資訊可以包括一個或多個表格、列表、樹或其他資料結構其指定該快取裝置之該記憶體的數個LBA範圍(也在此地被稱為槽),其中如此LBA範圍的每一個目前儲存一各自的快取列和/或可被用來儲存一各自的快取列。這樣的參考資訊可被維護來為該等數個LBA範圍的每一個記錄資訊,諸如該LBA範圍的大小、一週邊儲存裝置之一對應的邏輯基底位址、該LBA範圍之最近使用狀況和/或類似物。一些或所有的這些資訊可以被排序,例如,槽的大小、槽的最近使用狀況、等等。
透過說明而非限制的方式,該參考資訊可以識別一個或多個LBA範圍其每一個目前儲存有一各別經壓縮快取列和/或一個或多個LBA範圍其目前沒有儲存有效經壓縮快取列。舉例來說,該參考資訊可以包括資訊,該資訊識
別一個或多個LBA範圍不是目前儲存有有效資料之該快取記憶體的LBA範圍,其中該參考資訊進一步為該等一個或多個LBA範圍的每一個識別該LBA範圍的一各別的大小。在330的識別期間,該等數個LBA範圍可以包括有各自不同大小的一些LBA範圍。
在一實施例中,該參考資訊為數個LBA範圍的每一個指定該LBA範圍的最近使用狀況。在330識別該第一LBA範圍可基於該第一LBA範圍的最近使用狀況,舉例來說,當比較一個或多個每一個都具有等於該第一LBA範圍大小之其他LBA範圍最近使用狀況時。在330識別該第一LBA範圍可包括識別要從該快取記憶體清出的經壓縮資料-舉例來說,包括識別該第一LBA範圍之一種相對低的命中率,當比較該等數個LBA範圍之一個或多個的命中率時。
在330識別該第一LBA範圍可包括識別該等數個LBA的一子集合-例如,基於該子集合中該等LBA範圍的每一個具有一各別的扇區總數其等於足以儲存該第一經壓縮資料之一最小的扇區數。可替代地或另外地,識別該等數個LBA範圍之一子集合可基於該子集合之該等LBA範圍每一個,在該等可使用LBA範圍之中,具一LBA範圍扇區總數其最接近(且不小於)足以儲存該第一經壓縮資料之該最小的扇區數量。該第一LBA範圍可僅從該等數個LBA範圍的該子集合中被選擇出-例如,其中如此的選擇係基於該第一LBA範圍係該子集合之一最非近期使用之LBA範圍。
在330,識別該第一LBA範圍可包括把目前由該
參考資訊所識別的該等數個LBA範圍分割出一LBA範圍。舉例來說,一LBA範圍可以被分割出該第一LBA範圍以及一些其他LBA範圍其在方法300之並無儲存有效的資料。在此一實施例中,一LBA範圍的該分割可基於該第一經壓縮資料的大小-舉例來說,使得該第一LBA範圍至少具有一最小數量的扇區來儲存該第一經壓縮資料。
方法300還可以包括,在340,更新該參考資訊以指示該第一LBA範圍被分配給該第一經壓縮資料。在340的該更新可以包括更新該等數個LBA範圍,其被指定來包含識別該第一LBA範圍之資訊。可替代地或另外地,該更新可以包括產生或更新代表該第一LBA範圍之最近使用狀況的值。
在一實施例中,方法300包括,在350,發訊通告該第一經壓縮資料將要被寫入到該第一LBA範圍。舉例來說,在350該發訊通告可以包括該快取控制器發出一寫入命令、一交付命令和/或其他訊息給一快取記憶體或直接或間接地操作該快取記憶體的其他裝置。此一訊息可以包括該第一LBA範圍的一識別碼並且,在一些實施例中,係被識為一索引或其他數值以做為參考該第一資料(和第一經壓縮資料)之一標籤。如在本文中所討論的,耦合到該快取控制器之一壓縮引擎或其他的組件可在該第一經壓縮資料的大小已被傳遞到快取控制器之後暫時儲存該第一經壓縮資料,並且至少直到該快取控制器引擎已識別一特定的快取LBA範圍給該組件,該組件才把該第一經壓縮資料寫入於
其。或者,該第一經壓縮資料可以暫時儲存在一緩衝器中,其中,在基於該第一經壓縮資料的大小決定一快取LBA範圍之後,該快取控制器從該緩衝讀取出該第一經壓縮資料並將其寫入到該快取LBA範圍。
方法300可包括其他的操作(圖中未示出),各種前述和/或按照圖3所圖示的那些,可支援其他資料的該快取。透過說明的方式而非限制的方式,操作310到350可以重複用於不是第一資料的第二資料。如此第二資料的壓縮會產生第二經壓縮資料,其舉例來說,有異於該第一經壓縮資料的大小。該快取控制器可以接收-例如,從一壓縮引擎接收-識別該第二經壓縮資料的大小的資訊並且,作為回應,可以識別該快取記憶體的一第二LBA範圍。舉例來說,該第二LBA範圍可以基於該第二經壓縮資料的該大小和該第二LBA範圍的一大小來識別,其中該第一LBA範圍和該第二LBA範圍的大小不同。基於該第二LBA範圍的識別,方法300可以進一步更新參考資訊以指示該第二LBA範圍被分配給該第二經壓縮資料。舉例來說,該第二經壓縮資料可被寫入到該第二LBA範圍,其中該第一LBA範圍儲存該第一經壓縮資料而該第二LBA範圍儲存該第二經壓縮資料。
圖2B、2D和2E根據一實施例圖示出參考資訊的一些示例,該參考資訊可被存取來決定經壓縮資料的一快取和/或其他的存取。這樣的參考資訊可被包括在一快取控制器(諸如快取控制器模組101)中或以其他的方式可由該快
取控制器來存取,用於在決定把經壓縮資料快取到不同大小之各別的LBA範圍時作為參考。如此參考資訊之特定結構和內容僅是根據一實施例的一種說明性場景,並且不會限制其他的實施例。
如在圖2B中所示,該參考資訊可包括一種LBA映射210,它定義或以其他方式指定了一週邊儲存(在這個例子中,HDD)之LBA的每一個到該週邊儲存之一快取一各別LBA範圍的該對應。在LBA映射210中,快取LBA範圍的每一個被指示有該LBA範圍之一各別第一LBA(在「快取LBA」該行中)以及正儲存(和/或在一些實施例中,可供用於儲存)經壓縮資料之該LBA範圍的扇區總數(在「經壓縮大小」該行中)。在用圖2B-2E所表示的示意性情境中,一未壓縮快取列的大小為4KB(8個LBA,其中每一個LBA有512個位元組)。
圖2C圖示一快取記憶體220的元件,其由在LBA映射210所展示出之說明性參考資訊來描述。該示例性快取記憶體220包括一百個LBA,其中快取記憶體220的LBA範圍,在LBA映射210中被指定,同時儲存各別經壓縮快取列資料DLx每一個對應到在LBA映射210中所指定之一各自的HDD LBA範圍Lx。隨著一快取控制器操作以從快取記憶體220不同的LBA範圍清出經壓縮資料,讀出快取記憶體220之LBA範圍的經壓縮資料和/或把經壓縮資料寫入到快取記憶體220之LBA範圍,LBA映射210和/或其他如此參考資訊可被更新以反映如此的存取。這可以包括更新LBA映射210
來識別更多或更少的LBA範圍、改變一快取LBA範圍的大小和/或該變一快取LBA範圍的到一HDD範圍的之一對應。
該參考資訊可另外地或備選地為一個或多個LBA範圍的每一個指出該LBA範圍之對應的一最近使用狀況。這種最近使用狀況資訊的一示例係由圖2D之說明性的最近最少使用(LRU)列表230來表示。該等LRU列表230可以根據它們各自的大小,並且在一些實施例中,還根據在相同大小的槽中的一相對最近使用狀況來安排槽(LBA範圍)的列表。在一實施例中,一快取控制器可以識別一將被快取之壓縮資料的大小,並根據該尺寸,存取在LRU列表230中對應於該大小的該列。從該選擇的列,一較佳的槽可以被選擇作為快取該經壓縮資料的槽。最近使用狀況係指從一給定槽被寫入、讀出、更新和/或以其他方式存取開始的一段持續時間。
在一實施例中,參考資訊可被附加地或可選擇性地指定一個或多個LBA範圍可以自由的儲存經壓縮資料。如此參考資訊的一示例係由圖2E之該說明性自由槽列表240來表示。該自由槽列表240可根據各自的大小安排自由槽的列表,其目前沒有儲存有效資料。在一實施例中,一快取控制器可以識別將被快取之經壓縮資料的大小,並基於該大小,在自由槽表240中所列出者中挑出對應到該大小的該等槽。從具該大小的該等自由槽中,一槽可以被選擇作為快取該經壓縮資料的槽。
在一SSD(或作為快取之其他裝置)上一乾淨快取
列的清出中,在一實施例中,該快取列可以被簡單地被標記為經修整的,而LBA映射210和LRU列表230被更新來移除對該清出快取列的參考。該經修整的空間可被新增到自由槽列表240。在一骯髒快取列的清出中,經壓縮資料可從快取被讀取(如在讀出-命中中),寫入到該HDD(或其他的週邊儲存),然後該乾淨的清出程序被使用。在讀出和寫入未命中中,該快取控制器可以決定-例如至少部分地基於傳統快取判定準則-是否要插入該資料在該快取中。如果選擇要插入該資料,則可以使用本文中所討論的插入程序。在讀出命中中,該對應的快取LBA範圍可在LBA映射210中被查詢,伴隨該壓縮的大小,而一對應的讀出請求可被發出給該快取用於該資料。LRU列表230中該對應的一列可被相應地更新。在寫入命中中,該快取可能需要在該快取中更新該資料。由於該新的資料可能不同於舊資料的壓縮,該快取可能不一定能簡單地在該處更新該資料。因此,該快取可以被操作來壓縮該新的資料,並判定該壓縮後的大小,例如,如本文所討論的。如果該新的壓縮大小和該舊的壓縮大小需要相同的最小數目扇區(使用在LBA映射210中的一查詢來判定),那麼該資料可被原地更新。否則,該快取必須對舊資料使用一清出程序,之後跟隨著基於該新的壓縮資料大小進行一新的插入程序。
現在參考圖4,它是一資料壓縮模組之示例性操作的一流程圖,該等操作與本發明一致之一種壓縮資料的示例方法400一致。舉例來說,方法400可以用具有快取裝
置102之一些或全部功能的邏輯來執行。這樣的邏輯可以使用執行方法300的一快取控制器來操作。
如圖所示,方法400可以包括,在410,壓縮第一資料以產生第一經壓縮資料,該第一資料係由一資料壓縮模組從一快取控制器所接收。在一實施例中,方法400包括,在420,發送給該快取控制器可指出該第一經壓縮資料之大小的資訊。在420所發送的該資訊可包括一值其指定該第一經壓縮資料的該大小和/或基於在410所執行該壓縮所決定的一壓縮因數。在一實施例中,該快取控制器基於該第一經壓縮資料的大小和第一LBA範圍的大小來指出一快取記憶體的一第一LBA範圍。該第一LBA範圍可以是,舉例來說,在330所指出的該第一LBA範圍。方法400還可以包括,在430,基於該快取控制器接收指出該第一經壓縮資料大小的該資訊,把該第一經壓縮資料寫入到該第一LBA範圍。舉例來說,該快取控制器可為執行方法400的該裝置識別該第一LBA作為該第一經壓縮資料的一寫入目的地。
方法400更可以包含有,在440,壓縮第二資料以產生第二經壓縮資料,該第二資料係由一資料壓縮模組從一快取控制器所接收。在一實施例中,方法400包括,在450,發送給該快取控制器可指出該第二經壓縮資料之大小的資訊。在450所發送的該資訊可包括一值其指定該第一經壓縮資料的該大小和/或基於在440所執行的該壓縮所決定的一壓縮因數。在一實施例中,該快取控制器基於該第二經壓縮資料的大小和第二LBA範圍的大小來指出一快取記
憶體的一第二LBA範圍。方法400更可以包含有,在460,基於該快取控制器接收指出該第二經壓縮資料大小的該資訊把該第二經壓縮資料寫入到該第二LBA範圍。舉例來說,該快取控制器可為執行方法400的該裝置識別該第二LBA作為該第一經壓縮資料的一寫入目的地。在一個實施例中,該第一LBA儲存該第一經壓縮資料,而該第二LBA儲存了該第二經壓縮資料-舉例來說,其中第一LBA和該第二LBA各自具有不同的大小而該第一經壓縮資料和該第二經壓縮資料各自具有不同的大小。
在一種實現方式中,一裝置包含一快取控制器模組其包含有電路,該電路被配置成可把包含有第一資料之第一壓縮命令發送給一壓縮引擎,其中回應於該第一壓縮命令,該壓縮引擎壓縮該第一資料以產生第一經壓縮資料、判定該第一經壓縮資料的大小、指出一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,其中該第一LBA範圍係基於該第一經壓縮資料的該大小和指出該記憶體的數個LBA範圍之參考資訊來被識別的,該等數個LBA範圍包括各自不同大小的LBA範圍。基於該第一LBA範圍的識別,該快取控制器模組進一步更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料,和發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍。
在一實施例中,該快取控制器更將判定第二經壓縮資料的大小,該第二資料不是基於該第一壓縮命令所產生之任何的經壓縮資料,其中第二經壓縮資料的大小異於
該第一經壓縮資料的大小,並指出一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍係基於該第二經壓縮資料的該大小和該參考資訊來被識別的。基於該第二LBA範圍的識別,該快取控制器模組將更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料,和發訊通告該第二經壓縮資料將被寫入到該第二LBA範圍,其中該第一LBA範圍儲存該第一經壓縮資料,而該第二LBA範圍儲存該第二經壓縮資料。
在另一實施例中,該快取控制器模組更將被配置成可把該第一資料與一第一標籤相關聯,並在該第一壓縮命令中傳送該第一標籤。在另一實施例中,該快取控制器模組發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍包括該快取控制器模組發出包含該標籤和該第一LBA範圍的一寫入命令給該快取裝置。在另一實施例中,該快取控制器模組識別該第一LBA範圍包括該快取控制器模組識別從該記憶體清出的第二經壓縮資料。在另一實施例中,不是該快取裝置之一儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資料,並且其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。
在另一實施例中,該參考資訊識別目前儲存有效資料之該記憶體任何LBA範圍之外的一個或多個LBA範圍,並且其中該參考資訊更為該等一個或多個LBA範圍之
每一個識別該LBA範圍的一各別的大小。在另一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中該快取控制器模組基於該第一LBA範圍的最近使用狀況來識別該第一LBA範圍。在另一實施例中,該快取控制器模組識別該第一LBA範圍包括該快取控制器模組識別該等數個LBA範圍的一子集合係基於該子集合之該等LBA範圍的每一個具有該LBA範圍扇區總數其等於足以儲存該第一經壓縮資料之一最小的扇區數量,且該快取控制器模組僅從該子集合中選擇出該第一LBA範圍。在另一實施例中,該快取控制器模組將基於該第一LBA範圍係該子集合中一最不近期使用之LBA範圍來僅從該子集合中選擇出該第一LBA範圍。在另一實施例中,該快取控制器模組識別該第一LBA範圍包括該快取控制器模組識別該等數個LBA範圍的一子集合係基於該子集合之該等LBA範圍的每一個具有該LBA範圍扇區總數其最接近足以儲存該第一經壓縮資料之一最小的扇區數量,且該快取控制器模組僅從該子集合中選擇出該第一LBA範圍。
在另一種實現方式中,在一快取控制器的一種方法包括把包含有第一資料之第一壓縮命令發送給一壓縮引擎,其中回應於該第一壓縮命令,該壓縮引擎壓縮該第一資料以產生第一經壓縮資料、判定該第一經壓縮資料的大小、識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,其中該第一LBA範圍係基於該第一經壓縮資料
的該大小和指出該記憶體的數個LBA範圍之參考資訊來被識別的,該等數個LBA範圍包括各自不同大小的LBA範圍,且基於該第一LBA範圍的識別,更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料,和發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍。
在一實施例中,該方法更包含有判定第二經壓縮資料的一大小,該第二資料不是基於該第一壓縮命令所產生之任何的經壓縮資料,其中第二經壓縮資料的該大小異於該第一經壓縮資料的該大小,識別一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍係基於該第二經壓縮資料的該大小和該參考資訊來被識別的,並基於該第二LBA範圍的識別更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料,和發訊通告該第二經壓縮資料將被寫入到該第二LBA範圍,其中該第一LBA範圍儲存該第一經壓縮資料,而該第二LBA範圍儲存該第二經壓縮資料。
在另一實施例中,該方法更包含有把該第一資料相關聯到一第一標籤,並在該第一壓縮命令中包含有該第一標籤。在另一實施例中,發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍包括發出包含該標籤和該第一LBA範圍的一寫入命令。在另一實施例中,識別該第一LBA範圍包括識別要從該記憶體清出的第二經壓縮資料。在另一實施例中,不是該快取裝置之一儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資
料,並且其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。
在另一實施例中,該參考資訊識別目前儲存有有效資料之該記憶體任何LBA範圍之外的一個或多個LBA範圍,其中該參考資訊更為該等一個或多個LBA範圍之每一個識別該LBA範圍的一各別的大小。在另一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中係基於該第一LBA範圍的最近使用狀況來識別該第一LBA範圍。在另一實施例中,識別該第一LBA範圍包括識別該等數個LBA範圍的一子集合其係基於該子集合之該等LBA範圍的每一個具有該LBA範圍扇區總數其等於足以儲存該第一經壓縮資料之一最小扇區數量,且僅從該子集合中選擇出該第一LBA範圍。在另一實施例中,僅從該子集合中選擇出該第一LBA範圍係基於該第一LBA範圍是該子集合之一最非近期使用之LBA範圍。在另一實施例中,識別該第一LBA範圍包括識別該等數個LBA範圍的一子集合,基於該子集合之該等LBA範圍的每一個具有該LBA範圍扇區總數其最接近足以儲存該第一經壓縮資料之一最小扇區數量,且僅從該子集合中選擇出該第一LBA範圍。
在另一種實現方式中,一種電腦可讀取儲存媒體具有儲存在其上的指令,當其由一個或多個處理單元來執行時,致使一快取控制器執行一種方法,該方法包含有把
包含有第一資料之第一壓縮命令發送給一壓縮引擎,其中回應於該第一壓縮命令,該壓縮引擎壓縮該第一資料以產生第一經壓縮資料、判定該第一經壓縮資料的大小、識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,其中該第一LBA範圍係基於該第一經壓縮資料的該大小和指出該記憶體的數個LBA範圍之參考資訊來被識別的,該等數個LBA範圍包括各自不同大小的LBA範圍。該方法更包含有,基於該第一LBA範圍的識別,更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料,和發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍。
在一實施例中,該方法更包含有判定第二經壓縮資料的一大小,該第二資料不是基於該第一壓縮命令所產生之任何的壓縮資料,其中該第二經壓縮資料的該大小異於該第一經壓縮資料的該大小,並且識別一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍係基於該第二經壓縮資料的該大小和該參考資訊來被識別的。該方法更包含有,基於該第二LBA範圍的識別,更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料,和發訊通告該第二經壓縮資料將被寫入到該第二LBA範圍,其中該第一LBA範圍儲存該第一經壓縮資料,而該第二LBA範圍儲存該第二經壓縮資料。
在另一實施例中,該方法更包含有把該第一資料相關聯到一第一標籤,並在該第一壓縮命令中包含有該第
一標籤。在另一實施例中,發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍包括發出包含該標籤和該第一LBA範圍的一寫入命令。在另一實施例中,識別該第一LBA範圍包括識別要從該記憶體清出的第二經壓縮資料。在另一實施例中,一個非該快取裝置之儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資料,並且其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。
在另一實施例中,該參考資訊識別目前儲存有有效資料之該記憶體任何LBA範圍之外的一個或多個LBA範圍,其中該參考資訊更為該等一個或多個LBA範圍之每一個識別該LBA範圍的一各別的大小。在另一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中識別該第一LBA範圍係基於該第一LBA範圍的最近使用狀況。在另一實施例中,識別該第一LBA範圍包括識別該等數個LBA範圍的一子集合,其係基於該子集合之該等LBA範圍的每一個擁有該LBA範圍扇區總數等於足以儲存該第一經壓縮資料之一最小扇區數量,並且僅從該子集合中選擇出該第一LBA範圍。在另一實施例中,僅從該子集合中選擇出該第一LBA範圍係基於該第一LBA範圍是該子集合之一最非近期使用之LBA範圍。在另一實施例中,識別該第一LBA範圍包括識別該等數個LBA範圍的一子集合,基於該子集合之該等LBA範圍
的每一個擁有該LBA範圍扇區總數最接近於足以儲存該第一經壓縮資料之一最小扇區數量,且僅從該子集合中選擇出該第一LBA範圍。
在另一種實現方式中,一種系統包含有一快取裝置,該裝置包含有一記憶體和一壓縮,耦合到該快取裝置之一快取控制器,該快取控制器包含有電路其被配置來把包含有第一資料之第一壓縮命令發送給一壓縮引擎,其中回應於該第一壓縮命令,該壓縮引擎壓縮該第一資料以產生第一經壓縮資料、判定該第一經壓縮資料的大小、以及識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,其中該第一LBA範圍係基於該第一經壓縮資料的該大小和指出該記憶體的數個LBA範圍之參考資訊來被識別的,該等數個LBA範圍包括各自不同大小的LBA範圍。基於該第一LBA範圍的識別,該快取控制器更將更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料,和發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍。
在一實施例中,該快取控制器更將判定第二經壓縮資料的一大小,該第二資料不是基於該第一壓縮命令產生之任何的壓縮資料,其中該第二經壓縮資料的該大小異於該第一經壓縮資料的該大小,識別一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍係基於該第二經壓縮資料的該大小和該參考資訊來被識別的,並且基於該第二LBA範圍的識別,更新該參考資訊以指出該第二
LBA範圍被分配給該第二經壓縮資料,和發訊通告該第二經壓縮資料將被寫入到該第二LBA範圍,其中該第一LBA範圍儲存該第一經壓縮資料,而該第二LBA範圍儲存該第二經壓縮資料。
在另一實施例中,該快取控制器更被配置成把該第一資料相關聯到一第一標籤並在該第一壓縮命令中傳送該第一標籤。在另一實施例中,該快取控制器發訊通告該第一經壓縮資料將被寫入到該第一LBA範圍包括發出包含該標籤和該第一LBA範圍的一寫入命令給該快取裝置。在另一實施例中,該快取控制器識別該第一LBA範圍包括該快取控制器識別要從該記憶體清出的第二經壓縮資料。在另一實施例中,一個非該快取裝置之儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資料,其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。在另一實施例中,該參考資訊識別目前儲存有有效資料之該記憶體任何LBA範圍之外的一個或多個LBA範圍,並且其中該參考資訊更為該等一個或多個LBA範圍之每一個識別該LBA範圍的一各別的大小。
在另一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中該快取控制器識別該第一LBA範圍係基於該第一LBA範圍的最近使用狀況。在另一實施例中,該快取控制器識別該第
一LBA範圍包括識別該等數個LBA範圍的一子集合,其係基於該子集合之該等LBA範圍的每一個擁有該LBA範圍扇區總數等於足以儲存該第一經壓縮資料之一最小扇區數量,並且該快取控制器僅從該子集合中選擇出該第一LBA範圍。在另一實施例中,該快取控制器僅從該子集合中選擇出該第一LBA範圍係基於該第一LBA範圍是該子集合之一最非近期使用之LBA範圍。在另一實施例中,該快取控制器識別該第一LBA範圍包括識別該等數個LBA範圍的一子集合,基於該子集合之該等LBA範圍的每一個擁有該LBA範圍扇區總數最接近於足以儲存該第一經壓縮資料之一最小扇區數量,並且該快取控制器僅從該子集合中選擇出該第一LBA範圍。
在另一種實現方式中,一快取記憶體裝置包含有一資料壓縮模組,其包含有電路被配置成可壓縮第一資料以產生第一經壓縮資料,該第一資料係由該資料壓縮模組從一快取控制器所接收,發送給該快取控制器可指出該第一經壓縮資料之大小的資訊,其中該快取控制器基於該第一經壓縮資料的該大小和該第一LBA範圍的該大小來識別一快取裝置之一記憶體的一第一邏輯區塊位址(LBA)範圍,基於該快取控制器接收之指出該第一經壓縮資料大小的該資訊把該第一經壓縮資料寫入到該第一LBA範圍,以及壓縮第二資料以產生第二經壓縮資料,該第二資料接收自該快取控制器。該資料壓縮模組更將發送給該快取控制器可指出該第二經壓縮資料之一大小的資訊,其中該快取
控制器基於該第二經壓縮資料的該大小和該第二LBA範圍的該大小來識別一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍的該大小與該第一LBA範圍的一大小不同,並且基於該快取控制器接收之指出該第二經壓縮資料大小的該資訊把該第二經壓縮資料寫入到該第二LBA範圍。
在一實施例中,該快取控制器基於指出該記憶體之數個LBA範圍之參考資訊識別該第一LBA範圍,該等數個LBA範圍包括具各自不同大小的LBA範圍。在另一實施例中,不是該快取裝置之一儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資料,其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。在一實施例中,該參考資訊識別目前儲存有效資料之該記憶體的任何LBA範圍之外的一個或多個LBA範圍,並且其中該參考資訊更為該等一個或多個LBA範圍之每一個識別該LBA範圍的一各別的大小。在一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中該快取控制器模組基於該第一LBA範圍的最近使用狀況來識別該第一LBA範圍。
在另一種實現方式中,在一快取記憶體裝置的一種方法包含有壓縮第一資料以產生第一經壓縮資料,該第一資料係由該資料壓縮模組從一快取控制器所接收,發送
給該快取控制器可指出該第一經壓縮資料之大小的資訊,其中該快取控制器基於該第一經壓縮資料的該大小和該第一邏輯區塊位址(LBA)範圍的該大小來識別一快取裝置之一記憶體的一第一LBA範圍,基於該快取控制器接收之指出該第一經壓縮資料大小的該資訊把該第一經壓縮資料寫入到該第一LBA範圍。該方法更包含有壓縮第二資料以產生第二經壓縮資料,該第二資料接收自該快取控制器,發送給該快取控制器可指出該第二經壓縮資料之一大小的資訊,其中該快取控制器基於該第二經壓縮資料的該大小和該第二LBA範圍的該大小來識別一快取裝置之一記憶體的一第二LBA範圍,其中該第二LBA範圍的該大小與該第一LBA範圍的一大小不同,並且基於該快取控制器接收之指出該第二經壓縮資料大小的該資訊把該第二經壓縮資料寫入到該第二LBA範圍。
在一實施例中,該快取控制器基於指出該記憶體之數個LBA範圍之參考資訊識別該第一LBA範圍,該等數個LBA範圍包括具各自不同大小的LBA範圍。在另一實施例中,不是該快取裝置之一儲存裝置儲存該第一資料的一個版本同時該第一LBA範圍儲存該第一經壓縮資料,並且其中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的一大小,以及指定對應到該LBA範圍之該儲存裝置之一各自不同的邏輯基底位址。在一實施例中,該參考資訊識別目前儲存有效資料之該記憶體的任何LBA範圍之外的一個或多個LBA範圍,並且其中該參考資訊更為
該等一個或多個LBA範圍之每一個識別該LBA範圍的一各別的大小。在一實施例中,對於該等數個LBA範圍的每一個,該參考資訊指定該LBA範圍的最近使用狀況,其中該快取控制器模組基於該第一LBA範圍的最近使用狀況來識別該第一LBA範圍。
100‧‧‧快取系統
101‧‧‧快取控制器模組
102‧‧‧快取裝置
103‧‧‧資料壓縮模組
104‧‧‧CODEC
105‧‧‧緩衝器
106‧‧‧記憶體
107‧‧‧狀態資訊
Claims (21)
- 一種用於資料快取的裝置,其包含:一快取控制器模組,其包含被組配成可進行下列操作的電路:把包含第一資料的一第一壓縮命令傳送至一壓縮引擎,該壓縮引擎可回應於該第一壓縮命令而壓縮該第一資料以產生第一經壓縮資料;判定該第一經壓縮資料之大小;識別一快取裝置之一記憶體之一第一邏輯區塊位址(LBA)範圍,其中,該第一LBA範圍係基於該第一經壓縮資料之該大小並進一步係基於指出該記憶體之多個LBA範圍的參考資訊所識別出,該等多個LBA範圍包含各具有不同大小的數個LBA範圍,其中,該快取控制器基於該參考資訊而識別該第一LBA範圍之操作包含:該快取控制器基於多個列表而識別該第一LBA範圍,該等多個列表各對應於不同槽大小,並且該等多個列表係根據槽大小所配置,其中,針對該等多個列表中之各個列表而言:該列表分別識別出該記憶體之一或多個LBA範圍,該一或多個LBA範圍各係所對應槽大小,其中,該列表係根據為該所對應槽大小的數個LBA範圍間之相對最近使用狀況所配置;以及 基於對該第一LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料;及發訊通告該第一經壓縮資料要被寫入該第一LBA範圍。
- 如請求項1之裝置,其中,該快取控制器進一步可進行下列操作:判定第二經壓縮資料之大小,該第二經壓縮資料並非基於該第一壓縮命令所產生之壓縮資料,且該第二經壓縮資料之該大小異於該第一經壓縮資料之該大小;識別一快取裝置之一記憶體之一第二LBA範圍,其中,該第二LBA範圍係基於該第二經壓縮資料之該大小和該參考資訊所識別出;以及基於對該第二LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料;及發訊通告該第二經壓縮資料要被寫入該第二LBA範圍;其中,該第一LBA範圍會儲存該第一經壓縮資料而該第二LBA範圍會儲存該第二經壓縮資料。
- 如請求項1之裝置,其中,該快取控制器模組進一步被配置成可使該第一資料與一第一標籤相關聯,並可在該第一壓縮命令中傳送該第一標籤。
- 如請求項3之裝置,其中,該快取控制器模組發訊通告該第一經壓縮資料要被寫入該第一LBA範圍之操作包含:該快取控制器模組發出包含該標籤和該第一LBA範圍的一寫入命令至該快取裝置。
- 如請求項1之裝置,其中,該快取控制器模組識別該第一LBA範圍之操作包含:該快取控制器模組識別要被從該記憶體清出的第二經壓縮資料。
- 如請求項1之裝置,其中,不為該快取裝置的一儲存裝置會在該第一LBA範圍儲存該第一經壓縮資料時儲存該第一資料之一版本,並且其中,對於該等多個LBA範圍中之各者而言,該參考資訊指出:該LBA範圍之大小;以及該儲存裝置之對應於該LBA範圍的一不同邏輯基底位址。
- 如請求項1之裝置,其中,該參考資訊可用於識別不為該記憶體之目前儲存著有效資料的LBA範圍的一或多個LBA範圍,並且其中,該參考資訊進一步可用於識別該一或多個LBA範圍各自的LBA範圍大小。
- 如請求項1之裝置,其中,該快取控制器模組識別該第一LBA範圍之操作包含:該快取控制器模組根據該等多個LBA範圍之一子集合的LBA範圍各具有等於足以儲存該第一經壓縮資料之最小扇區數量的LBA範圍扇區總數,而識別該子集合;以及 該快取控制器模組僅從該子集合當中選擇該第一LBA範圍。
- 如請求項8之裝置,其中,該快取控制器模組係根據該第一LBA範圍為該子集合中之最非近期使用LBA範圍,而僅從該子集合當中選擇該第一LBA範圍。
- 如請求項1之裝置,其中,該快取控制器模組識別該第一LBA範圍之操作包含:該快取控制器模組根據該等多個LBA範圍之一子集合的LBA範圍各具有最接近足以儲存該第一經壓縮資料之最小扇區數量的LBA範圍扇區總數,而識別該子集合;以及該快取控制器模組僅從該子集合當中選擇該第一LBA範圍。
- 一種用於快取控制器的方法,該方法包含下列步驟:把包含第一資料的一第一壓縮命令傳送至一壓縮引擎,該壓縮引擎可回應於該第一壓縮命令而壓縮該第一資料以產生第一經壓縮資料;判定該第一經壓縮資料之大小;識別一快取裝置之一記憶體之一第一邏輯區塊位址(LBA)範圍,其中,該第一LBA範圍係基於該第一經壓縮資料之該大小且進一步係基於指出該記憶體之多個LBA範圍的參考資訊所識別出,該等多個LBA範圍包含各具有不同大小的數個LBA範圍,其中,基於該參考資訊而識別該第一LBA範圍之操作包含:基於多個列表 而識別該第一LBA範圍,該等多個列表各對應於不同槽大小,並且該等多個列表係根據槽大小所配置,其中,針對該等多個列表中之各個列表而言:該列表分別識別出該記憶體之一或多個LBA範圍,該一或多個LBA範圍各係所對應槽大小,其中,該列表係根據為該所對應槽大小的數個LBA範圍間之相對最近使用狀況所配置;以及基於對該第一LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料;及發訊通告該第一經壓縮資料要被寫入該第一LBA範圍。
- 如請求項11之方法,其進一步包含下列步驟:判定第二經壓縮資料之大小,該第二經壓縮資料並非基於該第一壓縮命令所產生的經壓縮資料,且該第二經壓縮資料之該大小異於該第一經壓縮資料之該大小;識別一快取裝置之一記憶體之一第二LBA範圍,其中,該第二LBA範圍係基於該第二經壓縮資料之該大小和該參考資訊所識別出;以及基於對該第二LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料;及發訊通告該第二經壓縮資料要被寫入該第二LBA範圍; 其中,該第一LBA範圍會儲存該第一經壓縮資料而該第二LBA範圍會儲存該第二經壓縮資料。
- 如請求項11之方法,其中,識別該第一LBA範圍之步驟包含:根據該等多個LBA範圍之一子集合的LBA範圍各具有最接近足以儲存該第一經壓縮資料之最小扇區數量的LBA範圍扇區總數,而識別該子集合;以及僅從該子集合當中選擇該第一LBA範圍。
- 一種儲存有指令在內的電腦可讀取儲存媒體,該等指令在受一或多個處理單元執行時可致使一快取控制器進行一種方法,該方法包含下列步驟:將包含第一資料的第一壓縮命令傳送至一壓縮引擎,其中,該壓縮引擎可回應於該第一壓縮命令而壓縮該第一資料以產生第一經壓縮資料;判定該第一經壓縮資料之大小;識別一快取裝置之一記憶體之一第一邏輯區塊位址(LBA)範圍,其中,該第一LBA範圍係基於該第一經壓縮資料之該大小並進一步係基於指出該記憶體之多個LBA範圍的參考資訊所識別出,該等多個LBA範圍包含各具有不同大小的數個LBA範圍,其中,基於該參考資訊而識別該第一LBA範圍之操作包含:基於多個列表而識別該第一LBA範圍,該等多個列表各對應於不同槽大小,並且該等多個列表係根據槽大小所配置,其中,針對該等多個列表中之各個列表而言: 該列表分別識別出該記憶體之一或多個LBA範圍,該一或多個LBA範圍各係所對應槽大小,其中,該列表係根據為該所對應槽大小的數個LBA範圍間之相對最近使用狀況所配置;以及基於對該第一LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料;以及發訊通告該第一經壓縮資料要被寫入該第一LBA範圍。
- 如請求項14之電腦可讀取儲存媒體,其中,該方法進一步包含下列步驟:判定第二經壓縮資料之大小,該第二經壓縮資料並非基於該第一壓縮命令所產生的經壓縮資料,且該第二經壓縮資料之該大小異於該第一經壓縮資料之該大小;識別一快取裝置之一記憶體之一第二LBA範圍,其中,該第二LBA範圍係基於該第二經壓縮資料之該大小和該參考資訊所識別出;以及基於對該第二LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料;及發訊通告該第二經壓縮資料要被寫入該第二LBA範圍;其中,該第一LBA範圍會儲存該第一經壓縮資料而該第二LBA範圍會儲存該第二經壓縮資料。
- 如請求項14之電腦可讀取儲存媒體,其中,該參考資訊可用於識別不為該記憶體之目前儲存著有效資料的LBA範圍的一或多個LBA範圍,並且其中,該參考資訊進一步可用於識別該一或多個LBA範圍各自的LBA範圍大小。
- 如請求項14之電腦可讀取儲存媒體,其中,識別該第一LBA範圍之步驟包含:根據該等多個LBA範圍之一子集合的LBA範圍各具有等於足以儲存該第一經壓縮資料之最小扇區數量的LBA範圍扇區總數,而識別該子集合;以及僅從該子集合當中選擇該第一LBA範圍。
- 如請求項17之電腦可讀取儲存媒體,其中,係根據該第一LBA範圍係該子集合之一最非近期使用LBA範圍,而僅從該子集合當中選擇該第一LBA範圍。
- 一種用於資料快取的系統,其包含:一快取裝置,其包含一記憶體和一壓縮引擎;耦接至該快取裝置的一快取控制器,該快取控制器包含被組配成可進行下列操作的電路:將包含第一資料的一第一壓縮命令傳送至該壓縮引擎,該壓縮引擎可回應於該第一壓縮命令而壓縮該第一資料以產生第一經壓縮資料;判定該第一經壓縮資料之大小;識別該快取裝置之一記憶體之一第一邏輯區塊位址(LBA)範圍,其中,該第一LBA範圍係基於該 第一經壓縮資料之該大小並進一步係基於指出該記憶體之多個LBA範圍的參考資訊所識別出,該等多個LBA範圍包括各具有不同大小的數個LBA範圍,其中,該快取控制器基於該參考資訊而識別該第一LBA範圍之操作包含:該快取控制器基於多個列表而識別該第一LBA範圍,該等多個列表各對應於不同槽大小,並且該等多個列表係根據槽大小所配置,其中,針對該等多個列表中之各個列表而言:該列表分別識別出該記憶體之一或多個LBA範圍,該一或多個LBA範圍各係所對應槽大小,其中,該列表係根據為該所對應槽大小的數個LBA範圍間之相對最近使用狀況所配置;及基於對該第一LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第一LBA範圍被分配給該第一經壓縮資料;及發訊通告該第一經壓縮資料要被寫入該第一LBA範圍。
- 如請求項19之系統,其中,該快取控制器可進一步進行下列操作:判定第二經壓縮資料之大小,該第二經壓縮資料並非基於該第一壓縮命令所產生的經壓縮資料,且該第二經壓縮資料之該大小異於該第一經壓縮資料之該大小; 識別一快取裝置之一記憶體之一第二LBA範圍,其中,該第二LBA範圍係基於該第二經壓縮資料之該大小和該參考資訊所識別出;以及基於對該第二LBA範圍之識別而進行下列操作:更新該參考資訊以指出該第二LBA範圍被分配給該第二經壓縮資料;及發訊通告該第二經壓縮資料要被寫入該第二LBA範圍;其中,該第一LBA範圍儲存該第一經壓縮資料而該第二LBA範圍儲存該第二經壓縮資料。
- 如請求項19之系統,其中,該快取控制器識別該第一LBA範圍之操作包含:根據該等多個LBA範圍之一子集合的LBA範圍各具有等於足以儲存該第一經壓縮資料之最小扇區數量的LBA範圍扇區總數,而識別該子集合;以及該快取控制器僅從該子集合當中選擇該第一LBA範圍。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/572,689 US9652384B2 (en) | 2014-12-16 | 2014-12-16 | Apparatus, system and method for caching compressed data |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201626382A TW201626382A (zh) | 2016-07-16 |
TWI596603B true TWI596603B (zh) | 2017-08-21 |
Family
ID=56111286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104136212A TWI596603B (zh) | 2014-12-16 | 2015-11-03 | 用於快取壓縮資料之設備、系統及方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9652384B2 (zh) |
KR (2) | KR102510384B1 (zh) |
CN (1) | CN107111551B (zh) |
TW (1) | TWI596603B (zh) |
WO (1) | WO2016099664A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652384B2 (en) | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
US9971692B2 (en) | 2015-11-17 | 2018-05-15 | International Business Machines Corporation | Supporting concurrent operations at fine granularity in a caching framework |
US9965390B2 (en) | 2015-11-17 | 2018-05-08 | International Business Machines Corporation | Reducing defragmentation in a multi-grained writeback cache |
US10095595B2 (en) | 2015-11-17 | 2018-10-09 | International Business Machines Corporation | Instant recovery in a multi-grained caching framework |
US9916249B2 (en) * | 2015-11-17 | 2018-03-13 | International Business Machines Corporation | Space allocation in a multi-grained writeback cache |
US10901937B2 (en) | 2016-01-13 | 2021-01-26 | Red Hat, Inc. | Exposing pre-registered memory regions for remote direct memory access in a distributed file system |
US10713211B2 (en) * | 2016-01-13 | 2020-07-14 | Red Hat, Inc. | Pre-registering memory regions for remote direct memory access in a distributed file system |
US20170271030A1 (en) * | 2016-03-18 | 2017-09-21 | Alibaba Group Holding Limited | Method and system for using downgraded flash die for cache applications |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US10459644B2 (en) * | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US10503652B2 (en) * | 2017-04-01 | 2019-12-10 | Intel Corporation | Sector cache for compression |
US10490238B2 (en) * | 2017-06-29 | 2019-11-26 | SK Hynix Inc. | Serializer and memory device including the same |
EP3665580B1 (en) * | 2017-08-08 | 2023-03-08 | Continental Automotive Technologies GmbH | Method of operating a cache |
US10558364B2 (en) | 2017-10-16 | 2020-02-11 | Alteryx, Inc. | Memory allocation in a data analytics system |
KR102157354B1 (ko) * | 2017-11-20 | 2020-09-17 | 삼성전자 주식회사 | 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 |
US10447296B1 (en) | 2018-06-22 | 2019-10-15 | International Business Machines Coporation | Accelerated compression/decompression including predefined dictionary |
US10884940B2 (en) * | 2018-12-21 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for using compression to improve performance of low voltage caches |
US11048419B2 (en) * | 2019-01-30 | 2021-06-29 | EMC IP Holding Company LLC | Adaptively over-allocating storage space for compressed data |
US11086791B2 (en) | 2019-08-29 | 2021-08-10 | Micron Technology, Inc. | Methods for supporting mismatched transaction granularities |
US12072806B2 (en) * | 2020-01-22 | 2024-08-27 | Alibaba Group Holding Limited | Compression and decompression module in a cache controller for reducing off-chip data traffic |
US11616722B2 (en) * | 2020-10-22 | 2023-03-28 | EMC IP Holding Company LLC | Storage system with adaptive flow control using multiple feedback loops |
US11614880B2 (en) * | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
CN113391951B (zh) * | 2021-05-20 | 2021-12-24 | 广西飞创信息科技有限公司 | 一种基于以太网精简传输的多点集中远程备份容灾方法与系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131184A1 (en) * | 2002-01-10 | 2003-07-10 | Wayne Kever | Apparatus and methods for cache line compression |
US20030229761A1 (en) * | 2002-06-10 | 2003-12-11 | Sujoy Basu | Memory compression for computer systems |
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
US20110022774A1 (en) * | 2009-07-22 | 2011-01-27 | Kabushiki Kaisha Toshiba | Cache memory control method, and information storage device comprising cache memory |
TW201234380A (en) * | 2011-01-14 | 2012-08-16 | Sandisk Il Ltd | Method and system for cache endurance management |
TWI380171B (en) * | 2004-02-04 | 2012-12-21 | Sandisk Technologies Inc | Data storage system with multiple mass storage device having overlapping address ranges |
US8489817B2 (en) * | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US20140310476A1 (en) * | 2013-04-12 | 2014-10-16 | Nec Laboratories America, Inc. | Bucketized multi-index low-memory data structures |
TWI459201B (zh) * | 2012-04-27 | 2014-11-01 | Toshiba Kk | Information processing device |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537575A (en) | 1994-06-30 | 1996-07-16 | Foley; Denis | System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5721874A (en) * | 1995-06-16 | 1998-02-24 | International Business Machines Corporation | Configurable cache with variable, dynamically addressable line sizes |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6408364B1 (en) * | 2000-03-17 | 2002-06-18 | Advanced Micro Devices, Inc. | Apparatus and method for implementing a least recently used cache replacement algorithm |
US6823427B1 (en) * | 2001-05-16 | 2004-11-23 | Advanced Micro Devices, Inc. | Sectored least-recently-used cache replacement |
US20050198062A1 (en) * | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
US7243191B2 (en) | 2004-08-31 | 2007-07-10 | Intel Corporation | Compressing data in a cache memory |
US7412564B2 (en) * | 2004-11-05 | 2008-08-12 | Wisconsin Alumni Research Foundation | Adaptive cache compression system |
US20070104212A1 (en) * | 2005-11-10 | 2007-05-10 | Michael Gutman | Cache-based compression of structured network traffic |
US7849241B2 (en) | 2006-03-23 | 2010-12-07 | International Business Machines Corporation | Memory compression method and apparatus for heterogeneous processor architectures in an information handling system |
JP4653830B2 (ja) | 2008-09-19 | 2011-03-16 | 株式会社東芝 | 命令キャッシュシステム |
US20100185816A1 (en) * | 2009-01-21 | 2010-07-22 | Sauber William F | Multiple Cache Line Size |
US20110161560A1 (en) | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US8949513B2 (en) * | 2011-05-10 | 2015-02-03 | Marvell World Trade Ltd. | Data compression and compacting for memory devices |
CN103999067A (zh) | 2011-12-21 | 2014-08-20 | 英特尔公司 | 以多个非易失性存储器为特征的高性能存储结构和系统 |
US9251096B2 (en) * | 2013-09-25 | 2016-02-02 | Intel Corporation | Data compression in processor caches |
KR101904421B1 (ko) * | 2013-09-27 | 2018-11-30 | 삼성전자주식회사 | 캐시 메모리를 제어하는 방법 및 장치. |
US9304937B2 (en) * | 2013-10-23 | 2016-04-05 | Netapp Inc. | Atomic write operations for storage devices |
US9734062B2 (en) * | 2013-12-13 | 2017-08-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and methods for caching a small size I/O to improve caching device endurance |
US9292449B2 (en) * | 2013-12-20 | 2016-03-22 | Intel Corporation | Cache memory data compression and decompression |
US9740621B2 (en) * | 2014-05-21 | 2017-08-22 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
KR102336528B1 (ko) * | 2014-07-07 | 2021-12-07 | 삼성전자 주식회사 | 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법 |
US9858196B2 (en) * | 2014-08-19 | 2018-01-02 | Qualcomm Incorporated | Power aware padding |
US20160092361A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Caching technologies employing data compression |
US9652384B2 (en) | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
-
2014
- 2014-12-16 US US14/572,689 patent/US9652384B2/en active Active
-
2015
- 2015-10-28 KR KR1020177012886A patent/KR102510384B1/ko active IP Right Grant
- 2015-10-28 KR KR1020237008572A patent/KR102584018B1/ko active IP Right Grant
- 2015-10-28 WO PCT/US2015/057815 patent/WO2016099664A1/en active Application Filing
- 2015-10-28 CN CN201580062357.5A patent/CN107111551B/zh active Active
- 2015-11-03 TW TW104136212A patent/TWI596603B/zh active
-
2017
- 2017-04-14 US US15/488,324 patent/US9996466B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131184A1 (en) * | 2002-01-10 | 2003-07-10 | Wayne Kever | Apparatus and methods for cache line compression |
US20030229761A1 (en) * | 2002-06-10 | 2003-12-11 | Sujoy Basu | Memory compression for computer systems |
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
TWI380171B (en) * | 2004-02-04 | 2012-12-21 | Sandisk Technologies Inc | Data storage system with multiple mass storage device having overlapping address ranges |
US8489817B2 (en) * | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US20110022774A1 (en) * | 2009-07-22 | 2011-01-27 | Kabushiki Kaisha Toshiba | Cache memory control method, and information storage device comprising cache memory |
TW201234380A (en) * | 2011-01-14 | 2012-08-16 | Sandisk Il Ltd | Method and system for cache endurance management |
TWI459201B (zh) * | 2012-04-27 | 2014-11-01 | Toshiba Kk | Information processing device |
US20140310476A1 (en) * | 2013-04-12 | 2014-10-16 | Nec Laboratories America, Inc. | Bucketized multi-index low-memory data structures |
Also Published As
Publication number | Publication date |
---|---|
US20170286294A1 (en) | 2017-10-05 |
KR20230039769A (ko) | 2023-03-21 |
KR20170097609A (ko) | 2017-08-28 |
CN107111551B (zh) | 2021-06-08 |
US20160170878A1 (en) | 2016-06-16 |
US9652384B2 (en) | 2017-05-16 |
TW201626382A (zh) | 2016-07-16 |
US9996466B2 (en) | 2018-06-12 |
KR102510384B1 (ko) | 2023-03-16 |
WO2016099664A1 (en) | 2016-06-23 |
KR102584018B1 (ko) | 2023-09-27 |
CN107111551A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI596603B (zh) | 用於快取壓縮資料之設備、系統及方法 | |
EP3436953B1 (en) | Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device | |
TWI594121B (zh) | 使用資料壓縮的快取技術 | |
US10282286B2 (en) | Address mapping using a data unit type that is variable | |
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
US10503647B2 (en) | Cache allocation based on quality-of-service information | |
US11675709B2 (en) | Reading sequential data from memory using a pivot table | |
US11721388B2 (en) | Large file integrity techniques | |
KR20220037333A (ko) | 구역 네임스페이스 디바이스들에서의 판독 처리 | |
WO2018063479A1 (en) | Storage device with fine grained search capability | |
US10048868B2 (en) | Replacement of a block with a compressed block to increase capacity of a memory-side cache | |
US10019198B2 (en) | Method and apparatus for processing sequential writes to portions of an addressable unit | |
US11347420B2 (en) | Attribute mapping in multiprotocol devices | |
US12079511B2 (en) | Devices and methods for optimized fetching of multilingual content in media streaming | |
US20210208808A1 (en) | Host Supported Partitions in Storage Device | |
US12056045B2 (en) | Scratchpad cache for gaming and IoT hosts | |
CN111367825B (zh) | 存储设备的虚拟校验数据缓存 | |
US20240220116A1 (en) | Optimized ssd for game loading and rendering |