TW201738753A - 管理硬體協助資料壓縮之記憶體片段儲存 - Google Patents
管理硬體協助資料壓縮之記憶體片段儲存 Download PDFInfo
- Publication number
- TW201738753A TW201738753A TW106106111A TW106106111A TW201738753A TW 201738753 A TW201738753 A TW 201738753A TW 106106111 A TW106106111 A TW 106106111A TW 106106111 A TW106106111 A TW 106106111A TW 201738753 A TW201738753 A TW 201738753A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- buffers
- hardware
- compressed
- compression
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭示用於管理硬體協助資料壓縮之實體電腦記憶體片段儲存之系統、裝置及方法,該等系統、裝置及方法可達成經減少內部片段儲存。一種實例性電腦實施之方法包括:由一記憶體管理程式將一壓縮命令提供至壓縮硬體,該壓縮命令包含待壓縮資料在實體電腦記憶體中之一位址及用於儲存經壓縮資料之至少兩個可用緩衝區之一清單;由該壓縮硬體使用該壓縮命令中所包含之該位址來擷取未經壓縮資料;壓縮該未經壓縮資料;及由該壓縮硬體自至少兩個可用緩衝區之該清單選擇至少兩個緩衝區來儲存經壓縮資料,該選擇基於在該經壓縮資料儲存於該至少兩個緩衝區中之情況下將剩餘之一空間量,其中該至少兩個選定緩衝區中之每一者之大小不同於該等選定緩衝區中之至少一個其他緩衝區。
Description
資料壓縮係用以將動態隨機存取記憶體(DRAM)之使用最佳化之一有效方式,且使用專用壓縮硬體來分流(offload)壓縮任務比使用在一處理器(例如,中央處理單元(CPU))上運行之軟體(例如一記憶體管理程式)更節能。CPU通常不會立刻存取整個實體電腦記憶體,且實體電腦記憶體之不同片段通常與不同任務相關聯。作業系統通常將管理壓縮實體電腦記憶體中之資料之此程序,且使用專用壓縮硬體來壓縮實體電腦記憶體中之資料將允許更省時且更節能地使用此技術。 在壓縮資料之前很難知曉儲存經壓縮資料需要多少空間。當使用壓縮硬體來壓縮實體電腦記憶體中之資料時,壓縮硬體知曉在壓縮之後經壓縮資料之大小並因此可判定應將經壓縮資料儲存於何處。在用於儲存經壓縮資料之空間大於所需空間之情況下發生片段儲存。所發生之任何片段儲存皆使資料壓縮不太有效。
此發明內容以一經簡化形式引入一概念選擇以提供對本發明之某些態樣之一基本理解。此發明內容並非本發明之一廣泛概述,且既不意欲識別本發明之關鍵或重要元素,亦不意欲描寫本發明之範疇。此發明內容僅呈現本發明之某些概念以作為下文所提供之實施方式之一前序。 本發明大體而言係關於用於壓縮實體電腦記憶體中之資料之方法、裝置及系統。更具體而言,本發明之態樣係關於管理硬體協助資料壓縮之實體電腦記憶體片段儲存。 在至少一項實施例中,一電腦實施之方法包括:在壓縮硬體處接收一壓縮命令,該壓縮命令包含待壓縮資料在實體電腦記憶體中之一位址及用於儲存由壓縮硬體輸出之經壓縮資料之可用緩衝區之一識別,該等可用緩衝區具有不同大小;使用該所接收位址自該實體電腦記憶體擷取未經壓縮資料;由壓縮硬體判定經壓縮資料之一大小;由壓縮硬體選擇該所接收壓縮命令中識別之可用緩衝區中之一或多者來在其中儲存該經壓縮資料;及由壓縮硬體將與未經壓縮資料、經壓縮資料及/或可用緩衝區相關聯之資訊傳達至一記憶體管理程式。 根據其他態樣,在至少一項實施例中,該電腦實施之方法進一步包括:由壓縮硬體將自實體電腦記憶體擷取之未經壓縮資料壓縮成經壓縮資料,其中基於該經壓縮資料之一大小而判定用於儲存經壓縮資料之該緩衝區大小。 根據電腦實施之方法之其他態樣,在至少一項實施例中,壓縮硬體基於在經壓縮資料儲存於可用緩衝區中之一或多者中之後該等可用緩衝區中之一或多者中將剩餘之一未使用空間量而選擇該等可用緩衝區中之該一或多者來在其中儲存該經壓縮資料。 根據電腦實施之方法之其他態樣,在至少一項實施例中,該一或多個選定緩衝區之大小不同於該等可用緩衝區中之至少一個其他緩衝區。 根據電腦實施之方法之其他態樣,在至少一項實施例中,與未經壓縮資料、經壓縮資料及/或可用緩衝區相關聯之資訊包含以下各項中之至少一者:經壓縮資料之一大小、經壓縮資料之一狀態、未經壓縮資料之一狀態或選擇了該等可用緩衝區中之哪些可用緩衝區來儲存該經壓縮資料。 根據電腦實施之方法之其他態樣,在至少一項實施例中,該經壓縮資料之一狀態包含以下各項中之至少一者:自該實體電腦記憶體擷取之該資料係可壓縮的、該經壓縮資料儲存於該一或多個選定緩衝區中、該經壓縮資料被複製至該一或多個選定緩衝區或該經壓縮資料未被複製至該一或多個選定緩衝區。 根據電腦實施之方法之其他態樣,在至少一項實施例中,該未經壓縮資料之一狀態包含以下各項中之至少一者:該未經壓縮資料係不可壓縮的、該未經壓縮資料被複製至一單個目的地緩衝區或該未經壓縮資料被複製於多個目的地緩衝區且在該多個目的地緩衝區之間被分離。 根據其他態樣,在至少一項實施例中,該電腦實施之方法進一步包括:回應於該使用該所接收位址自該實體電腦記憶體擷取該未經壓縮資料,判定該未經壓縮資料係不可壓縮的;及將該未經壓縮資料儲存至一或多個目的地緩衝區。 根據電腦實施之方法之其他態樣,在至少一項實施例中,基於經壓縮資料之該大小大於一臨限量而判定該未經壓縮資料係不可壓縮的。 根據其他態樣,在至少一項實施例中,該腦實施之方法進一步包括:由該壓縮硬體選擇該所接收壓縮命令中識別之該等可用緩衝區中之至少兩者來在其中儲存該經壓縮資料,其中該等選定緩衝區中之每一者之大小不同於該等選定緩衝區中之至少一個其他緩衝區。 根據其他態樣,在至少一項實施例中,該電腦實施之方法進一步包括:由該壓縮硬體基於使在該經壓縮資料儲存於該等可用緩衝區中之至少兩者中之後該至少兩個可用緩衝區中將剩餘之一未使用空間量最小化而選擇該至少兩個可用緩衝區,其中該至少兩個可用緩衝區中之每一者之大小不同於該至少兩個可用緩衝區中之至少一個其他緩衝區。 根據其他態樣,在至少一項實施例中,該電腦實施之方法進一步包括:由該壓縮硬體回應於來自該記憶體管理程式之一解壓縮命令而將該至少兩個選定可用緩衝區解壓縮。 在至少一項實施例中,本發明揭示一種用於將儲存於實體電腦記憶體中之至少兩個緩衝區中之經壓縮資料解壓縮之電腦實施之方法,該電腦實施之方法包括:在壓縮硬體處自在一處理器而非該壓縮硬體上執行之一記憶體管理程式接收一解壓縮命令,其中該解壓縮命令包含該至少兩個緩衝區之一識別及實體電腦記憶體中用於儲存由該壓縮硬體輸出之經解壓縮資料之一目的地位址,且其中該至少兩個緩衝區中之每一者之大小不同於該至少兩個緩衝區中之至少一個其他緩衝區;由該壓縮硬體藉由將儲存於該至少兩個緩衝區中之該經壓縮資料解壓縮而輸出經解壓縮資料;將由該壓縮硬體輸出之該經解壓縮資料儲存於實體電腦記憶體中之該目的地位址處;及由該壓縮硬體將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式。 根據電腦實施之方法之其他態樣,在至少一項實施例中,該由該壓縮硬體將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式包含以下各項中之至少一者:通知一已完成解壓縮、通知一解壓縮錯誤、在一暫存器中更新一解壓縮狀態、產生一中斷或將一解壓縮狀態寫入至實體電腦記憶體中之一位址。 在至少一項實施例中,一裝置包括:一處理器;實體電腦記憶體;壓縮硬體,其與該處理器通信;及一記憶體管理程式,其將一壓縮命令提供至該壓縮硬體,該壓縮命令包含待壓縮資料在該實體電腦記憶體中之一位址及用於儲存由該壓縮硬體輸出之經壓縮資料之複數個可用緩衝區之一清單,該等緩衝區具有不同大小,該壓縮硬體經組態以:使用該壓縮命令中所包含之該位址來擷取未經壓縮資料;將該未經壓縮資料壓縮成經壓縮資料;及自可用緩衝區之該清單選擇至少兩個緩衝區來儲存經壓縮資料,其中自該清單選擇之該至少兩個緩衝區中之每一者之大小不同於未自該清單選擇的該等緩衝區中之至少一個其他緩衝區。 根據該裝置之其他態樣,在至少一項實施例中,自該清單選擇之該至少兩個緩衝區係基於在該經壓縮資料儲存於自該清單選擇之該至少兩個緩衝區中之情況下自該清單選擇之該至少兩個緩衝區中將剩餘之一未使用空間量而選擇。 根據該裝置之其他態樣,在至少一項實施例中,該壓縮硬體經組態以將該經壓縮資料之一大小、該經壓縮資料之一狀態、該未經壓縮資料之一狀態及/或自可用緩衝區之該清單選擇了哪些緩衝區來儲存經壓縮資料傳達至該記憶體管理程式。 根據該裝置之其他態樣,在至少一項實施例中,該記憶體管理程式將一解壓縮命令提供至該壓縮硬體,該解壓縮命令包含:實體電腦記憶體中用於儲存由該壓縮硬體輸出之經解壓縮資料之一目的地位址;及實體電腦記憶體中之至少兩個資料緩衝區之一清單,其中經壓縮資料儲存於該至少兩個資料緩衝區中,且其中該至少兩個資料緩衝區中之每一者之大小不同於該至少兩個資料緩衝區中之至少一個其他資料緩衝區;且其中該壓縮硬體經組態以:藉由將儲存於該至少兩個資料緩衝區中之該經壓縮資料解壓縮而輸出經解壓縮資料;將該經解壓縮資料儲存於實體電腦記憶體中之該目的地位址處;及將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式。 根據該裝置之其他態樣,在至少一項實施例中,該壓縮硬體經組態以將一已完成解壓縮之資訊、一解壓縮錯誤之資訊、解壓縮狀態之一更新及/或回應於一解壓縮操作之一中斷傳達至該記憶體管理程式。 根據該裝置之其他態樣,在至少一項實施例中,自該清單選擇之該至少兩個緩衝區係基於使在該經壓縮資料儲存於自該清單選擇之該至少兩個緩衝區選定中之後自該清單選擇之該至少兩個緩衝區中將剩餘之一未使用空間量最小化而選擇。 應注意,本文中所揭示之某些或全部處理器與記憶體系統之實施例亦可經組態以執行上文所揭示之某些或全部方法性實施例。另外,上文所揭示之某些或全部方法之實施例亦可表示為體現於非暫時性電腦可讀儲存媒體(諸如光學記憶體或磁性記憶體)上之指令。 本發明之方法、裝置及系統之其他適用範疇將因下文所給出之實施方式而變得顯而易見。然而,實施方式及特定實例雖然指示方法、裝置及系統之實施例,但僅藉由圖解說明方式給出,此乃因本文中所揭示之概念之精神及範疇內之各種改變及修改將因此實施方式而對熟習此項技術者變得顯而易見。
相關申請案之交叉參考 本申請案主張2016年2月23日提出申請之美國臨時專利申請案第62/298,836號之優先權,該申請案之全部揭示內容藉此以引用方式併入。 現在將闡述本發明之方法、裝置及系統之各種實例及實施例。以下說明提供特定細節以達成一透徹理解且達成對此等實例之說明。然而,熟習相關技術者將理解,可在無諸多此等細節之情況下實踐本文中所闡述之一或多項實施例。同樣地,熟習相關技術者亦將理解本發明之一或多項實施例可包含本文中未詳細闡述之其他特徵。另外,下文可不詳細地展示或闡述某些眾所周知結構或功能以避免不必要地使相關說明模糊。 用於壓縮實體電腦記憶體中之資料之諸多現有方法係完全基於軟體。雖然某些現有方法係基於硬體的,但此等方法通常過於簡單且試圖藉由使用用以在其中儲存經壓縮資料之一或多個可用緩衝區之一大小之一固定比率(例如,半頁大小)來避免片段儲存問題。若在儲存之後當經壓縮資料並未填充分配給緩衝區之固定空間量時導致存在大量未使用空間,則此會顯著限制自實體電腦記憶體中之資料之壓縮獲取之空間量。如本文中所使用,空間係指記憶體儲存容量,記憶體儲存容量(舉例而言)可以位元組量測。未使用空間可用於儲存且已使用空間含有所儲存資料。 本發明之實施例係關於用於管理硬體協助資料壓縮之實體電腦記憶體片段儲存之方法、裝置及系統。如下文將更詳細地闡述,本發明之方法、裝置及系統提供使壓縮硬體與一記憶體管理程式一起工作以使記憶體片段儲存最小化、使硬體複雜性最小化且允許壓縮硬體在減少涉及其中之記憶體管理程式之情況下操作的一方式。 如上文所闡述,很難提前知曉是否可壓縮實體電腦記憶體中之一特定資料片段(例如,部分、量等),且若可以,可在多大程度上壓縮彼資料。然而,在壓縮完成之前的某一時刻,必須做出關於特定經壓縮資料片段將佔用多少空間之一決策。根據本發明之一或多項實施例,提供壓縮硬體(有時可被稱為「一記憶體壓縮分流引擎」或簡稱為「引擎」或為簡潔起見稱為「硬體」),藉此壓縮硬體經設計以極端迅速且高效,此乃因壓縮硬體除其他特徵之外亦具有與一對應記憶體管理程式之有限互動。一記憶體管理程式可係軟體或韌體形式,且可係一作業系統之一模組。圖5及有關揭示內容包含一實例性實施例中之壓縮硬體之實施之額外細節。 實體電腦記憶體中之資料之硬體協助壓縮之一經簡化實例可如下:(i)一記憶體管理程式指示壓縮硬體壓縮實體電腦記憶體中之一位址中之資料;(ii)壓縮硬體壓縮資料且通知記憶體管理程式關於經壓縮資料之大小;(iii)記憶體管理程式基於關於經壓縮資料大小之資訊而決定用以儲存經壓縮資料之一位置(例如,在實體電腦記憶體中);及(iv)記憶體管理程式指示壓縮硬體將經壓縮資料儲存於所決定位置。依據此實例,容易看出在此等現有方法下,由於記憶體管理程式與壓縮硬體之間的眾多互動,通信虛耗及相關聯延時變得相當大。 允許壓縮硬體做出更多決策將提供一較快介面。困難來自於管理系統中之所有實體電腦記憶體的並非壓縮硬體之事實。因此,根據本發明之一或多項實施例,可給予壓縮硬體幾個選項並允許壓縮硬體基於所提供選項而選擇含一或多個最佳或幾乎最佳緩衝區之一集合。根據本文中所闡述之一或多項實施例,壓縮硬體可判定最佳或幾乎最佳選擇涉及多個緩衝區。舉例而言,為了使經壓縮資料適合任何丟失/浪費/未使用空間同時亦使該空間最小化或幾乎最小化,壓縮硬體可選擇因記憶體管理程式而變得可用(例如,呈現或提供)之緩衝區選項中之一者以上。舉例而言,壓縮硬體可判定使用較小緩衝區之一組合比使用一個大緩衝區有利,大緩衝區或可不夠大以至無法容納經壓縮資料,或可大於所需空間。 一旦壓縮硬體已選擇(例如,判定、選取、決定等)可用緩衝區中之一或多者,壓縮硬體然後便可通知記憶體管理程式關於其選擇。應注意,壓縮硬體可在其壓縮緩衝區之前或在壓縮完成之後的某時通知記憶體管理程式選定緩衝區。亦即,雖然壓縮硬體無法在壓縮之前確切知曉經壓縮資料之一大小,但其可能夠在壓縮之前估計或推斷經壓縮資料之一大小。記憶體管理程式可在壓縮之前或之後向壓縮硬體請求此資訊。 舉例而言,根據一或多項實施例,本文中所闡述之方法、裝置及系統經設計,使得記憶體管理程式使用壓縮硬體來非同步地壓縮實體電腦記憶體中之固定大小資料片段(例如,頁),且試圖使片段儲存最小化或接近片段儲存之一最小值且達成一有利壓縮比率或有效壓縮比率。本發明之方法、裝置及系統經設計,使得壓縮硬體可將經壓縮資料快速移動至一或多個新位置中而無需記憶體管理程式之任何直接協助。因此,壓縮硬體可立刻繼續至下一未經壓縮資料,藉此使片段儲存最小化同時仍維持一高速壓縮。 圖1展示用於管理硬體協助資料壓縮之實體電腦記憶體片段儲存之一系統100中之實例性資料流程。根據本文中所闡述之一或多項實施例,該系統可包含記憶體管理程式110 (例如,軟體、韌體或一作業系統之一部分)、壓縮硬體120、一或多個壓縮硬體緩衝區130及實體電腦記憶體140 (例如,主記憶體或隨機存取記憶體(RAM))。壓縮硬體緩衝區130可在壓縮硬體內部或外部,具體情形取決於實施方案之偏好及設計因子。在一或多項其他實施例中,除上述實例性組件之外或替代上述實例性組件,實例性系統100可包含其他組件。類似地,用於管理硬體協助資料壓縮之實體電腦記憶體140片段儲存的系統100可包含比所展示實例性組件之數目少之組件,或可在不背離本文中所闡述之系統之操作、特徵或功能性之情況下組合所展示實例性組件中之一或多者。 根據至少一項實施例,記憶體管理程式110可將一或多個壓縮命令(145)提供至壓縮硬體120,該一或多個壓縮命令(145)包含待壓縮資料在實體電腦記憶體140中之一位址及實體電腦記憶體140中可具有不同大小之可用緩衝區之一清單。壓縮硬體120自記憶體管理程式110接收一或多個壓縮命令(145),使用待壓縮資料在實體電腦記憶體140中之位址來自實體電腦記憶體140接收(例如,擷取或者獲得)未經壓縮資料(150) (例如,頁),並將所接收或所提供資料壓縮(155)成一或多個壓縮硬體緩衝區130。然後,壓縮硬體(120)知曉用於經壓縮資料155之可能的最小緩衝區大小。如此,壓縮硬體120檢查來自記憶體管理程式110之壓縮命令(145)中提供之可用緩衝區之該清單,選擇此等可用緩衝區中之一或多者來儲存經壓縮資料(160、165、170),並通知175記憶體管理程式110選擇了緩衝區中之哪些緩衝區。然後記憶體管理程式110處理結論。結論可係由壓縮硬體120寫入並由記憶體管理程式110讀取、用以指示一壓縮命令145被完成之資料,該資料包含(舉例而言):最終狀態(例如,經壓縮且儲存於緩衝區中、被複製至緩衝區、經壓縮但未複製至緩衝區等)、哪一(哪些)緩衝區(若存在)被使用、最終經壓縮大小及任何其他相關資訊。在識別由壓縮硬體120選擇(175)之緩衝區之後,記憶體管理程式110可判定緩衝區中之哪一(哪些)緩衝區仍未使用。未經使用緩衝區可由記憶體管理程式110在發送至壓縮硬體120之後續壓縮命令145上再次使用。 由於壓縮性質,上述實例性程序不同於其他類型之分流操作(例如,網路連接或加密)。由於無法提前知曉實體電腦記憶體140中之資料之最終經壓縮大小,因此在程序中存在一額外決策點,本發明之方法、裝置及系統在壓縮硬體120與記憶體管理程式110之間高效地分離。 根據本文中所闡述之一或多項實施例,記憶體管理程式110藉由提供不同大小之多個緩衝區且允許壓縮硬體120將經壓縮資料155之內容分離至多個緩衝區中而輔助對應壓縮硬體120更高效地做出一決策。在眾多其他優勢中,此一方法允許更高效之資料打包,藉此減少由於片段儲存而丟失之空間。本發明之方法、裝置及系統由於系統中之空間浪費較少以及更簡單且更快之硬體設計而可達成經改良之有效壓縮比率。使記憶體管理程式110負責識別可用緩衝區(例如,提供空閒緩衝區之一清單)且將壓縮命令145發送至壓縮硬體120允許減小壓縮硬體120之大小且減弱其複雜性,此乃因壓縮硬體120不必管理潛在存在之具有不同大小之大量空閒緩衝區且亦不必處理最後重組問題。 如下文將更詳細地闡述,本發明提供用於使壓縮硬體120加速實體電腦記憶體140中之資料之壓縮及解壓縮之一方法。根據至少一項實施例,壓縮硬體120經設計以對(舉例而言) 4千位元組之未經壓縮頁上進行操作。在本文中所提供之方法、裝置及系統中,記憶體管理程式110可負責管理對實體電腦記憶體140之分配及片段儲存。 在一實例性實施例中,一描述符可含有一壓縮命令145或一解壓縮命令。一描述符可係一佇列中之一元素。除用以在其中儲存經壓縮資料155之可用緩衝區之一清單之外,一壓縮命令145亦可包含待壓縮資料在實體電腦記憶體140中之一位址。類似地,一解壓縮命令可包含待解壓縮資料在實體電腦記憶體140中之一或多個位址及用以在其中儲存經解壓縮資料的實體電腦記憶體140中之一目的地位址。 根據本發明之至少一項實施例,記憶體管理程式110將命令放置至一描述符先進先出(FIFO) 200佇列中。(參見圖2及下文之有關論述。) 壓縮硬體120自描述符FIFO 200取用壓縮命令145,處理該等命令並將結果寫回至同一描述符。壓縮硬體120可在描述符完成之後基於(例如)一暫存器中之一位元之一值而旋即產生一中斷。在接收到該中斷之後,記憶體管理程式110可處理來自數個描述符之結果並使描述符返回至閒置(例如,「IDLE」)狀態。即使僅可提供一個描述符FIFO 200佇列,壓縮硬體120可具有足以在達成期望頻寬之同時處理多個壓縮命令145之電路。 根據本文中所闡述之至少一項實施例,在每一壓縮命令145發送至壓縮硬體120之後,記憶體管理程式110提供經壓縮資料可被寫入之若干個(例如四個、六個、八個等)可用(例如目標、空閒等)緩衝區。每一此可用緩衝區之大小可係(舉例而言) 2的N次方,其範圍介於自64位元組至4千位元組之間或具有某些其他範圍及/或大小之變化。 壓縮硬體120將未經壓縮資料150壓縮至一或多個壓縮硬體緩衝區130且判定儲存經壓縮資料155需要多少空間。取決於實施方案,若經壓縮資料155之大小(舉例而言)大於3千位元組,則未經壓縮資料150可被視為不可壓縮且可視情況將未經壓縮資料150複製至一4千位元組之目的地緩衝區。或者,壓縮硬體120選擇由尋求最小化或接近未使用空間之一最小值之記憶體管理程式110提供(例如識別、列示等)之可用緩衝區中之一或多者,且將經壓縮資料155寫入至選定緩衝區。舉例而言,當可用緩衝區中之兩者被壓縮硬體120選定時,對經壓縮資料155之儲存可開始於兩個緩衝區中之較大者且可結束於較小緩衝區。壓縮硬體120不必覆寫較小緩衝區之未使用部分。替代地,當壓縮硬體120將結果寫回至描述符時,壓縮硬體120可指示經壓縮資料155之大小及可用緩衝區中之哪些可用緩衝區被選定。 圖1B係包含由根據一實例性實施例之壓縮硬體120進行之一選擇之一圖式。圖1B圖解說明兩個實例性情境,在該兩個情境中8千位元組之未經壓縮資料150被經壓縮成2.1千位元組之經壓縮資料155。在第一情境中,兩個可用緩衝區1010及1020之一清單由一記憶體管理程式110提供至壓縮硬體120。在此第一情境中,緩衝區1010及1020兩者皆係2千位元組。壓縮硬體120將選擇緩衝區1010及緩衝區1020兩者來儲存經壓縮資料155,將經壓縮資料155分離成兩個片段,一個2千位元組之片段儲存於緩衝區1010中且另一0.1千位元組之片段儲存於緩衝區1020中。因此,在此第一情境中,在緩衝區1020中仍存在1.9千位元組之未使用空間1030,此未使用空間係內部片段儲存1040之一實例。在此第一情境中,一比率係用於經壓縮資料155之2.1千位元組之空間比選定緩衝區中4千位元組之空間。 在第二情境中,三個可用緩衝區1060、1070及1080之一清單由一記憶體管理程式110提供至壓縮硬體120。在此第二情境中,緩衝區1060、1070及1080分別係1千位元組、2千位元組及4千位元組。壓縮硬體120將選擇1050緩衝區1060及緩衝區1070兩者來儲存經壓縮資料155,將經壓縮資料155分離成兩個片段,一個2千位元組之片段儲存於緩衝區1070中且另一0.1千位元組之片段儲存於緩衝區1060中。因此,在此第二情境中,緩衝區1060中仍存在0.9千位元組之未使用空間1090。此未使用空間係內部片段儲存1095之一實例。在此第二情境中,一比率係用於經壓縮資料155之2.1千位元組之空間比選定緩衝區中3千位元組之空間。 圖1B中之該兩個情境僅係兩個實例。在涉及固定緩衝區大小之一情境中,在由一記憶體管理程式110提供至壓縮硬體120之所有可用緩衝區皆具有一相同大小之情況下,選定緩衝區之總容量超過經壓縮資料155之一大小之可用緩衝區之任何選擇可足矣。然而,在涉及不同大小之多個可用緩衝區之一情境中,壓縮硬體120可基於在儲存經壓縮資料155之後可用緩衝區中剩餘之一空間量而自可用緩衝區之一清單進行選擇。因此,在其中一記憶體管理程式110將不同大小之多個可用緩衝區之一清單提供至壓縮硬體120之一情境中,與其中一記憶體管理程式110將全部皆具有一相同大小之可用緩衝區之一清單提供至壓縮硬體120之一情境相比,可減少內部片段儲存,且可改良對實體電腦記憶體140中可用空間之管理。 在至少一項實施例中,選擇可用緩衝區中之僅一者可足矣。圖1C係包含由根據一實例性實施例之壓縮硬體120進行之一選擇之一圖式。圖1C圖解說明兩個實例情境,在該兩個情境中8千位元組之未經壓縮資料150被壓縮成1000位元組之經壓縮資料155。在第一情境中,兩個可用緩衝區1110及1120之一清單由一記憶體管理程式110提供至壓縮硬體120。在此第一情境中,緩衝區1110及1120兩者皆係2千位元組。壓縮硬體120需要選擇僅一個緩衝區且可選擇緩衝區1110來儲存經壓縮資料155而無需將經壓縮資料155分離成片段。因此,在此第一情境中,緩衝區1110中仍存在1048位元組之未使用空間。此未使用空間係內部片段儲存1140之一實例。在此第一情境中,一比率係用於經壓縮資料155之1000位元組之空間比選定緩衝區中2048位元組之空間。 在第二情境中,三個可用緩衝區1160、1170及1180之一清單由一記憶體管理程式110提供至壓縮硬體120。在此第二情境中,緩衝區1160、1170及1180分別係1千位元組、2千位元組及4千位元組。壓縮硬體120將選擇1150緩衝區1160來儲存經壓縮資料155且不必將經壓縮資料155分離成片段。因此,在此第二情境中,緩衝區1160中仍存在24位元組之未使用空間。此未使用空間係內部片段儲存1195之一實例。在此第二情境中,一比率係用於經壓縮資料155之1000位元組之空間比選定緩衝區中1024位元組之空間。 圖1C中之兩個情境僅係兩個實例。在涉及不同大小之多個可用緩衝區之一情境中,壓縮硬體120可基於在儲存經壓縮資料155之後可用緩衝區中剩餘之一空間量而自可用緩衝區之一清單進行選擇。因此,與其中一記憶體管理程式110將全部皆具有一相同大小之可用緩衝區之一清單提供至壓縮硬體120之一情境相比,在其中一記憶體管理程式110將不同大小之多個可用緩衝區之一清單提供至壓縮硬體120之一情境中,可減少內部片段儲存,且可改良對實體電腦記憶體140中之可用空間之管理。 根據本發明之一或多項實施例,在壓縮操作期間記憶體管理程式110與壓縮硬體120之間的通信可透過一循環描述符FIFO (先進先出) 200佇列進行。描述符FIFO 200可位於實體電腦記憶體140中。圖2圖解說明此一循環描述符FIFO 200之一實例。舉例而言,記憶體管理程式110可在初始化時設定描述符FIFO 200之大小及用於描述符FIFO 200之一基底暫存器,且每一佇列元素(例如,包含色彩位元250及佇列項目260)之長度可係(舉例而言) 64個位元組。在至少一項實施例中,含有描述符FIFO 200之基底位址及大小之一暫存器可係壓縮硬體120之一部分。根據至少一項實施例,記憶體管理程式110可將以下實例性命令欄位程式化: (i)用以壓縮之實體位址。 (ii)空閒區域及大小之指標之某些數目(例如,6)。舉例而言,記憶體管理程式110可提供具有以下大小中之一者之一個緩衝區:128個位元組、256個位元組、512個位元組、1024個位元組、2048個位元組及4096個位元組。在另一實例中,亦可提供一64位元組緩衝區。然而,應理解,記憶體管理程式110可選擇提供緩衝區大小之任何組合,且除上述實例性緩衝區大小中之一或多者之外或者替代上述實例性緩衝區大小中之一或多者,可提供各種其他緩衝區大小。 (iii)用以指示在完成此壓縮命令145之後是否需要一中斷之一位元。 另外,根據本文中所闡述之一或多項實施例,壓縮硬體120可設定以下實例性結果欄位: (i)經壓縮資料之大小(例如,以位元組為單位)。 (ii)已對使用了哪些可用緩衝區之指示。舉例而言,buf0_sel及bufl_sel可指示已使用緩衝區之一選擇。 可由壓縮硬體120及記憶體管理程式110兩者寫入描述符FIFO 200內之狀態欄位。舉例而言,記憶體管理程式110可將狀態欄位設定成PEND以將描述符之擁有權轉移至壓縮硬體120。然後,壓縮硬體120可將狀態欄位設定為一完成碼(例如,COMPRESSED、COPIED、ABORTED、ERROR、ZERO或諸如此類)以將描述符之擁有權轉移回至記憶體管理程式110。壓縮操作
根據本文中所闡述之一或多項實施例,記憶體管理程式110可產生至描述符FIFO 200中之多組壓縮命令145且壓縮硬體120可取用該等命令。被稱為讀取索引及寫入索引之一對暫存器可追蹤描述符FIFO 200之狀態。下文提供關於寫入索引(240)及讀取索引(210)以及兩個其他索引(本文中稱為完成索引(220)及空閒索引(230))之額外細節。 在至少一項實例中,寫入索引(240)由記憶體管理程式110所擁有(例如,僅由記憶體管理程式110使用、與記憶體管理程式110相關聯等),且不能由壓縮硬體120對其進行寫入。寫入索引(240)被初始化至0且指向記憶體管理程式110將寫入之下一項目。記憶體管理程式110在將一壓縮命令145插入至描述符FIFO 200中並將描述符狀態寫入為「PEND」之後遞增寫入索引(240)。記憶體管理程式110可針對多個壓縮命令145以至寫入索引暫存器之一單次寫入來遞增寫入索引(240)。寫入索引(240)之最高有效位元(MSB)被稱為寫入色彩位元(250)。色彩位元(250)並不用於在描述符FIFO 200中加索引,而是可用於區分FIFO空情形與FIFO滿情形。每當寫入索引(240)自最後項目換行回至第一項目時,色彩位元(250)可被反轉。 根據本文中所闡述之一或多項實施例,讀取索引(210)由壓縮硬體120所擁有(例如,僅由壓縮硬體120使用、與壓縮硬體120相關聯等),且不能由記憶體管理程式110對其進行寫入。讀取索引(210)被初始化至0且指向壓縮硬體120將讀取以處理之下一描述符。壓縮硬體120可在提取一描述符並檢查彼狀態== PEND之後遞增讀取索引(210)。讀取索引(210)亦包含一色彩位元(例如,色彩位元(250))。 正如讀取索引(210)一樣,完成索引(220)亦由壓縮硬體120所擁有(例如僅由壓縮硬體120使用、與壓縮硬體120相關聯等),且不能由記憶體管理程式110對其進行寫入。完成索引(220)被初始化至0且指向壓縮硬體120將完成之下一命令。壓縮硬體120可在完成該命令之後遞增完成索引(220),且壓縮硬體120相應地寫入結果及狀態欄位。完成索引(220)之MSB被稱為讀取色彩位元(例如,色彩位元(250))。讀取色彩位元不用於在描述符FIFO 200中加索引,而是可用於區分FIFO空情形與FIFO滿情形。 根據一或多項實施例,空閒索引(230)僅實施於記憶體管理程式110中。空閒索引(230)被初始化至0且指向將由記憶體管理程式110釋放之下一描述符。記憶體管理程式110可在其處理一壓縮命令145之完成結果且已準備好將再次使用之描述符項目時遞增空閒索引(230)。 應注意,根據本發明之至少一項實施例,當對於包含色彩位元(250)之所有位元而言寫入索引(240)與完成索引(220)匹配時,描述符FIFO 200係空的;當對於所有位元而言惟色彩位元(250)除外,寫入索引(240)與完成索引(220)匹配時,描述符FIFO 200係滿的;且描述符FIFO 200中有效項目之數目係寫入索引(240) —完成索引(220)。 記憶體管理程式110可經組態以確保描述符FIFO 200未溢位,且縮硬體120可經組態以確保描述符FIFO 200之抗反向溢位(一元素自一空佇列之取用)。根據一或多項實施例,記憶體管理程式110不可寫入至由壓縮硬體120所擁有之任何描述符(例如,由壓縮硬體120所擁有之描述符可具有狀態==PEND);壓縮硬體120不可寫入至壓縮硬體120並不擁有之任何描述符;記憶體管理程式110不可寫入至記憶體管理程式110不擁有之任何欄位;壓縮硬體120不可讀取超出由記憶體管理程式110程式化之寫入索引(例如,圖2中索展示之實例中之寫入索引(240))之一項目;記憶體管理程式110可推斷完成索引(例如,完成索引(220))而非自壓縮硬體120讀取完成索引;且所推斷出之完成索引可被初始化至0且每當描述符FIFO 200並非空的且所推斷出之完成索引處之描述符之狀態並非PEND時可遞增。 根據至少一項實施例,壓縮硬體120可在壓縮命令145完成時以FIFO次序將命令完成寫入至結果及狀態欄位。舉例而言,由於匯流排限制及/或效能問題,壓縮硬體120可寫入描述符之其他部分但將保留值讀取。壓縮硬體120亦可將未定義或所保留欄位設定為0。另外,當完成索引220達到一規定值(例如,中斷完成索引暫存器)時或當一特定壓縮命令145完成時(例如,如由壓縮命令145中之一欄位規定),壓縮硬體120可引發一中斷。記憶體管理程式110可自描述符讀取此等結果且為空閒記憶體區域更新簿記。 圖3係用於使用記憶體管理程式110來在資料壓縮期間管理實體電腦記憶體140之片段儲存之一實例性程序300。根據至少一項實施例,實例性程序300可包含方塊305至315中所陳述之操作。應注意,根據一或多項實施例,實例性程序300之操作可與實例性程序400 (下文詳細闡述且圖4中圖解說明)之操作互補及/或組合。 在方塊305處,可將一或多個壓縮命令145提供至壓縮硬體120。舉例而言,根據至少一項實施例,在方塊305處提供之一或多個壓縮命令145可包含待由壓縮硬體120壓縮之資料在實體電腦記憶體140中之一位址及壓縮硬體120用以儲存由壓縮硬體120輸出之經壓縮資料155的實體電腦記憶體140中之可用緩衝區之一識別(例如,一清單)。 在方塊310處,可在記憶體管理程式110處自壓縮硬體120接收一指示(例如通信、通知等),其中該指示指示壓縮硬體120選擇了可用緩衝區中之哪些可用緩衝區來儲存經壓縮資料155。 在方塊315處,可自壓縮硬體120接收(例如,在記憶體管理程式110處)資訊,其中資訊與經壓縮資料155、未經壓縮資料150及/或壓縮命令145中(例如,在方塊305處)提供之可用緩衝區相關聯。舉例而言,與未經壓縮資料150、經壓縮資料155及/或可用緩衝區相關聯之資訊可包含由壓縮硬體120壓縮之資料之一大小、經壓縮資料155之一狀態(例如,經壓縮資料儲存於由壓縮硬體120選擇之一或多個緩衝區中,經壓縮資料155被複製至由壓縮硬體120選擇之一或多個緩衝區、經壓縮資料155未被複製至由壓縮硬體120選擇之一或多個緩衝區等)及/或未經壓縮資料150之一狀態(例如,未經壓縮資料150係不可壓縮的,未經壓縮資料150被複製至一目的地緩衝區等)。 應注意,根據本文中所闡述之至少一項實施例,在方塊315處自壓縮硬體120接收之資訊可與方塊310處之選定緩衝區之指示一起被接收(例如,在記憶體管理程式110處)。 圖4係用於實體電腦記憶體140中之資料之硬體協助壓縮之一實例性程序400。舉例而言,根據本文中所闡述之至少一項實施例,實例性程序400可由壓縮硬體120執行且可包含方塊405至440之操作。第一,壓縮硬體120可自一記憶體管理程式110接收(405)一壓縮命令145,壓縮命令145包含一待壓縮緩衝區之一位址及識別不同大小之可用緩衝區之資料。第二,壓縮硬體120可判定(410)用於儲存待壓縮資料之一最小可能緩衝區大小。若在(415)中判定經壓縮資料155將不適合於任何可用緩衝區集合內,則壓縮硬體120可將資料之經壓縮大小及一不可壓縮狀態發送(440)至記憶體管理程式110。若在(415)中判定經壓縮資料155將適合於任何可用緩衝區集合內(其中一集合可包括一個或多個緩衝區),則壓縮硬體120可選擇(420)一可用緩衝區集合(其中一集合可包括一或多個緩衝區)來儲存經壓縮資料155。然後,壓縮硬體120可壓縮資料且將經壓縮資料155儲存(425)於選定緩衝區中。接下來,壓縮硬體120可通知(430)記憶體管理程式110關於選擇了可用緩衝區中之哪些可用緩衝區來儲存經壓縮資料155。然後壓縮硬體120可將資料之經壓縮大小及一壓縮狀態發送(435)至記憶體管理程式110。 在至少一項實施例中,藉由利用多個緩衝區,甚至關於被視為不可壓縮之資料仍可獲得益處。舉例而言,根據至少一項實施例,在壓縮硬體120已判定在何種程度上(若需要)壓縮一給定資料片段(例如集合、區塊等)之後,壓縮硬體120仍可用於分離資料。舉例而言,在使用4千位元組之片段之一情境中,可將資料分離至較小緩衝區中,此取決於由作業系統實施之記憶體方案而可改良外部片段儲存。解壓縮操作
根據一或多項實施例,本發明之方法、裝置及系統可包含各種解壓縮操作。可存在解壓縮命令暫存器之多個集合,且命令暫存器之每一集合可靜態地被分配給一記憶體管理程式110以達成一特定目的。舉例而言,每一CPU可具有命令暫存器之一專用集合以服務於用於一分頁錯誤處理常式之解壓縮。 在一實例性實施例中,記憶體管理程式110可將解壓縮命令暫存器程式化,且最終寫入將一解壓縮目的地暫存器中之狀態欄位設定為PEND。 在一實例性實施例中,壓縮硬體120可藉由執行一解壓縮操作而處理解壓縮命令。然後壓縮硬體120可將解壓縮目的地暫存器中之狀態欄位更新為一完成碼(例如,經解壓縮或ERROR)。視情況,壓縮硬體120可將完成碼寫入至實體電腦記憶體140中之一規定位置。此外,解壓縮操作一經執行,壓縮硬體120便可視情況產生一中斷。 在一實例性實施例中,解壓縮命令可包含一欄位,在該欄位中記憶體管理程式110可指示經壓縮資料155之大小(若該欄位可用)。此欄位係選用的,且若此欄位不可用,則在壓縮期間壓縮硬體120將需要能夠自動判定經壓縮資料155之末端且忽視緩衝區可尚未被寫入之剩餘部分。 在一實例性實施例中,取決於實施方案,記憶體管理程式110可輪詢解壓縮目的地暫存器,輪詢實體電腦記憶體140中之規定位置及/或等待中斷以偵測完成。 應理解,根據本發明之一或多項實施例,一解壓縮操作可能夠處置多含有經壓縮資料155之個緩衝區。亦即,在未經壓縮資料150在壓縮之後被分離且儲存於一個以上位置(例如,160、165)中,分離經壓縮資料(例如,160、165)之解壓縮操作將需要自一個以上位置載入資料以將所請求資料解壓縮。 此外,在一實例性實施例中,解壓縮操作可具有一中斷控制。亦即,若實施方案包含解壓縮操作一經完成便產生之一中斷,則對一中斷之一控制可包含於實施方案中。中斷控制可呈解壓縮命令暫存器中之一位元形式。 此外,在一實例性實施例中,解壓縮操作可具有對一結果寫入之一控制。亦即,若實施方案包含在命令完成之後旋即將狀態寫入至規定記憶體位置之選項,則壓縮硬體120可將結果寫入至由一解壓縮命令結果寫入位址規定的實體電腦記憶體140中之一位置。 圖6係與由根據一實例性實施例之壓縮硬體120接收之一壓縮命令145有關之一電腦實施之方法(600)之一流程圖。第一,在壓縮硬體120處接收(610)一壓縮命令145,壓縮命令145包含待壓縮資料在實體電腦記憶體140中之一位址且用於儲存由壓縮硬體120輸出之經壓縮資料155之可用緩衝區之一識別,該等可用緩衝區具有不同大小。第二,使用所接收位址自實體電腦記憶體140擷取(620)未經壓縮資料150。第三,壓縮硬體120判定(630)經壓縮資料155之一大小。第四,由壓縮硬體120基於使在經壓縮資料155儲存於至少兩個可用緩衝區中之後該至少兩個可用緩衝區中剩餘之一未使用空間量最小化而選擇(640)可用緩衝區中之至少兩者,其中至少兩個可用緩衝區中之每一者之大小不同於該至少兩個可用緩衝區中之至少一個其他緩衝區。第五,由壓縮硬體120將與未經壓縮資料150、經壓縮資料155及/或可用緩衝區相關聯之資訊傳達(650)至一記憶體管理程式110。 在至少一項實施例中,如涉及圖1C中之實例性資料所圖解說明,壓縮硬體120選擇可用緩衝區中之僅一者可足矣。 圖9係與根據一實例性實施例之壓縮硬體120接收之一壓縮命令145有關之一電腦實施之方法900之一流程圖。第一,在壓縮硬體120處接收(910)一壓縮命令145,壓縮命令145包含待壓縮資料在實體電腦記憶體140中之一位址及用於儲存由壓縮硬體120輸出之經壓縮資料155之可用緩衝區之一識別,該等可用緩衝區具有不同大小。第二,使用所接收位址自實體電腦記憶體140擷取(920)未經壓縮資料150。第三,壓縮硬體120判定(930)經壓縮資料155之一大小。第四,由壓縮硬體120選擇(940)所接收壓縮命令145中識別之可用緩衝區中之一或多者來在其中儲存經壓縮資料155。第五,壓縮硬體120將與未經壓縮資料150、經壓縮資料155及/或可用緩衝區相關聯之資訊傳達(950)至一記憶體管理程式110。 圖7係根據一實例性實施例用於將儲存於實體電腦記憶體140中之至少兩個緩衝區中之經壓縮資料155解壓縮之一電腦實施之方法(700)之一流程圖。第一,在壓縮硬體120處自在一處理器而非壓縮硬體120上被執行之一記憶體管理程式110接收(710)一解壓縮命令,其中解壓縮命令包含至少兩個緩衝區之一識別及實體電腦記憶體140中用於儲存由壓縮硬體120輸出之經解壓縮資料之一目的地位址,且其中該至少兩個緩衝區中之每一者之大小不同於該至少兩個緩衝區中之至少一個其他緩衝區。第二,由壓縮硬體120藉由將儲存於至少兩個緩衝區中之經壓縮資料(至少160、165)解壓縮而輸出(720)經解壓縮資料。第三,將由壓縮硬體120輸出之經解壓縮資料儲存(730)於實體電腦記憶體140中之目的地位址處。第四,由壓縮硬體120將與經解壓縮資料相關聯之資訊傳達(740)至記憶體管理程式110。 圖8係與由根據一實例性實施例之壓縮硬體120接收之一壓縮命令145有關之一電腦實施之方法(800)之一流程圖。第一,一記憶體管理程式110將一壓縮命令145提供(810)至壓縮硬體120,壓縮命令145包含待壓縮資料在實體電腦記憶體140中之一位址及用於儲存由壓縮硬體120輸出之經壓縮資料155之複數個可用緩衝區之一清單,該等緩衝區具有不同大小。第二,壓縮硬體120使用(820)壓縮命令145中所包含之位址來擷取未經壓縮資料150。第三,壓縮硬體120將未經壓縮資料150壓縮(830)成經壓縮資料155。第四,壓縮硬體120基於使在經壓縮資料155儲存於自清單選擇之至少兩個緩衝區中之後自清單選擇之至少兩個緩衝區中將剩餘之一未使用空間量最小化而自可用緩衝區之清單選擇(840)該至少兩個緩衝區來儲存經壓縮資料155,其中自清單選擇之至少兩個緩衝區中之每一者之大小不同於自清單選擇的緩衝區中之至少一個其他緩衝區。 圖5係根據本文中所闡述之一或多項實施例的經配置以管理硬體協助資料壓縮之實體電腦記憶體(520、140) 片段儲存之一例示性運算裝置(500)之一高階方塊圖。舉例而言,根據本發明之至少一項實施例,運算裝置(500)可經組態以提供使壓縮硬體120與記憶體管理程式110一起工作以使實體電腦記憶體(520、140)之片段儲存最小化、將壓縮硬體120之複雜性最弱化且允許壓縮硬體120連續操作而無來自記憶體管理程式110為達成空閒空間管理之過多介入的一方式。 在一極基本組態(501)中,運算裝置(500)通常包含一或多個處理器(510)、實體電腦記憶體(520、140) (例如,系統記憶體)及壓縮硬體(550、120)。一記憶體匯流排(530)可用於在處理器(510)、壓縮硬體(550、120)與實體電腦記憶體(520、140)之間通信。 取決於期望組態,處理器(510)可係任何類型,包含但不限於一微處理器(μP)、一微控制器(μC)、一數位信號處理器(DSP)或諸如此類或上述各項之任何組合。根據至少一項實施例,可根據上文結合記憶體管理程式110所闡述之方法(包含圖3、圖4、圖6、圖7、圖8及圖9中概述之方法之相關部分)將應用處理器(510)程式化。可以一特殊應用積體電路(ASIC)、定製積體電路、數位信號處理器(DSP)、場可程式化閘陣列(FPGA)或其他專用硬體實施方案來構造壓縮硬體(550、120)。壓縮硬體(550、120)可係經設計以用於一資料壓縮方法及(視情況)一資料解壓縮方法之專用積體電路形式之硬體。在一實例性實施例中,專用壓縮硬體(550、120)可連續取用可用描述符以執行實體電腦記憶體(520、140)中之資料之壓縮以在無來自在應用處理器(510)上運行之記憶體管理程式110之介入之情況下達成空閒空間管理。 處理器(510)可包含一個多階快取記憶體(諸如一個一階快取記憶體(511)及一個二階快取記憶體(512))、一處理器核心(513)。亦可為應用處理器510及壓縮硬體550提供暫存器(514、554)。處理器核心(513)可包含一算術邏輯單元(ALU)、一浮點單元(FPU)、一數位信號處理核心(DSP核心)或諸如此類或者上述各項之任何組合。 一記憶體控制器(515)亦可與一或多個處理器(510、550)一起使用,或在某些實施方案中單獨記憶體控制器(515)可係一或多個處理器(510、550)中之每一者之一內部部分。在另一實施例中,如同處理器510,壓縮硬體(550、120)可係一記憶體控制器515之主機。在一實例性實施例中,壓縮硬體(550、120)與記憶體控制器515之間的連接可係直接的。在另一實例性實施例中,壓縮硬體(550、120)與記憶體控制器515之間的連接可係間接的,例如,經由一互連件。在一實例性實施例中,壓縮硬體(550、120)可與應用處理器510電子通信。在一實例性實施例中,壓縮硬體(550、120)可包含描述符FIFO (553、200)及壓縮硬體緩衝區(555、130)。 取決於期望組態,實體電腦記憶體(520、140)可係任何類型,包含但不限於揮發性記憶體(諸如RAM)、非揮發性記憶體(諸如ROM、快閃記憶體等)或上述各項之任何組合。實體電腦記憶體(520、140)通常包含一作業系統(521)、一或多個應用程式(522)及程式資料(524)。應用程式(522)可包含用於管理本文中所闡述之硬體協助壓縮之實體電腦記憶體(523) 片段儲存之一系統。 根據本發明之至少一項實施例,用於管理硬體協助資料壓縮之實體電腦記憶體(523) 片段儲存之系統經設計,使得記憶體管理程式110輔助對應壓縮硬體120藉由以下方式更高效地做出一決策:提供不同大小之多個緩衝區且允許壓縮硬體120 (a)將經壓縮資料155之內容分離至多個緩衝區中並基於經壓縮資料155之大小而選擇若干緩衝區來儲存經壓縮資料155或(b)基於經壓縮資料155之大小而選擇一緩衝區來儲存經壓縮資料155,從而達成高效資料打包且藉此減少由於片段儲存而丟失之空間。用於管理硬體協助資料壓縮之實體電腦記憶體(523) 片段儲存之系統由於系統中之浪費空間較少以及更簡單且更快之硬體設計而可達成經改良之有效壓縮比率。 程式資料(524)可包含當由一或多個處理裝置執行時實施用於管理硬體協助資料壓縮之實體電腦記憶體(520、140) 片段儲存之一系統(523)及方法的儲存指令。另外,根據至少一項實施例,程式資料(524)可包含壓縮命令145及緩衝區資料(525),緩衝區資料(525)可(舉例而言)與待壓縮資料之一位址及不同大小之空閒緩衝區之一清單有關,相關聯壓縮硬體120可自空閒緩衝區之該清單進行選擇以用於儲存經壓縮資料155。根據至少一項實施例,應用程式(522)可經配置以與程式資料(524)一起在一作業系統(521)上操作。 運算裝置(500)可具有額外特徵或功能性及用以促進基本組態(501)之間的通信之額外介面以及任何所需裝置及介面。 實體電腦記憶體(520、140)係電腦儲存媒體之一實例。電腦儲存媒體包含但不限於:RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVD)或其他光學儲存裝置、卡式磁帶、磁帶、磁碟儲存裝置或其他磁性儲存裝置或可用於儲存期望資訊且可由運算裝置500存取之任何其他媒體。任何此類電腦儲存媒體可係裝置(500)之一部分。 運算裝置(500)可實施於一積體電路中,諸如一微控制器或一系統單晶片(SoC);或其可實施為一小型可攜(或行動)電子裝置之一部分,諸如一行動電話、一智慧型電話、一個人資料助理(PDA)、一個人媒體播放器裝置、一平板電腦(tablet)、一無線網頁監視裝置、一個人耳機裝置、一特殊應用裝置或包含以上功能中之任一者之一混合裝置。另外,運算裝置(500)亦可實施為包含膝上型電腦及非膝上型電腦組態兩者之一個人電腦、一或多個伺服器、物聯網系統及諸如此類。 前述詳細說明已經由使用方塊圖、流程圖及/或實例來陳述裝置及/或程序之各項實施例。只要此等方塊圖、流程圖及/或實例含有一個或多個功能及/或操作,熟習此項技術者便可理解,可藉由一寬廣範圍之硬體、軟體、韌體或幾乎其任何組合來個別地及/或共同地實施此等方塊圖、流程圖或實例內之每一功能及/或操作。根據至少一項實施例,本文中所闡述之標的物之數個部分可經由特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)、數位信號處理器(DSP)或其他整合格式實施。然而,熟習此項技術者將認識到,本文中所揭示之實施例之某些態樣可,作為在一或多個電腦上運行之一或多個電腦程式、作為在一或多個處理器上運行之一或多個程式、作為韌體或作為幾乎上述各項之任何組合而全部或部分地等效實施於積體電路中,且根據本發明,設計電路及/或為軟體及/或韌體寫入程式碼將在熟習此項技術者之技能範圍內。 另外,熟習此項技術者將瞭解,本文中所闡述之標的物之機構或其各部分能夠作為各種形式之一程式產品而被分配,且本文中所闡述之標的物之一說明性實施例無論用於實施該分配之非暫時性電腦可讀媒體之類型如何皆適用。一非暫時性媒體之實例包含但不限於以下各項:一可記錄類型之媒體,諸如一軟碟片、一硬碟機、一固態磁碟機、一光碟(CD)、一數位視訊光碟(DVD)、一數位磁帶、一電腦記憶體等。 關於本文中實質上係任何複數及/或單數術語之使用,熟習此項技術者可視內容脈絡及/或應用之情況而自複數變換為單數及/或從單數變換為複數。為清晰起見,可明確地陳述各種單數/複數置換。 本文中所論述之系統、裝置及方法並不需要收集或使用使用者個人資訊。在其中特定實施方案可收集或使用關於使用者之個人資訊(例如,使用者資料、關於一使用者之社交網路之資訊,使用者之位置及時間、使用者之生物資訊、使用者之活動及人口資訊)之情況中,向使用者提供一或多個機會來控制是否收集個人資訊、是否儲存個人資訊、是否使用個人資訊及如何收集、儲存及使用關於使用者之資訊。亦即,具體而言,本文中所論述之系統、裝置及方法在自使用者接收到明確授權之後才會收集、儲存及/或使用使用者個人資訊。另外,可在儲存或使用特定資料之前以一或多種方式對其進行處理,使得個人可識別資訊被移除。作為一項實例,可處理一使用者之身份,使得無個人可識別資訊可被判定。作為另一實例,可將一使用者之地理位置泛化至一較大區域,使得不可判定使用者之特定位置。 因此,已闡述了標的物之實施例。其他實施例歸屬於以下申請專利範圍之範疇內。在某些情形中,申請專利範圍中所陳述之動作可以一不同次序執行且仍達成期望結果。另外,附圖中所繪示之流程並不需要所展示之特定次序或順序次序來達成期望結果。在特定實施方案中,多任務及並行處理可係有利的。
100‧‧‧系統/實例性系統
110‧‧‧記憶體管理程式
120‧‧‧壓縮硬體
130‧‧‧壓縮硬體緩衝區
140‧‧‧實體電腦記憶體
145‧‧‧壓縮命令
150‧‧‧未經壓縮資料
155‧‧‧經壓縮資料
160‧‧‧經壓縮資料/位置
165‧‧‧經壓縮資料/位置
170‧‧‧經壓縮資料
175‧‧‧選擇之緩衝區
200‧‧‧描述符先進先出/循環描述符先進先出
210‧‧‧讀取索引
220‧‧‧完成索引
230‧‧‧空閒索引
240‧‧‧寫入索引
250‧‧‧色彩位元
260‧‧‧佇列項目
500‧‧‧例示性運算裝置/運算裝置
501‧‧‧極基本組態/基本組態
510‧‧‧處理器/應用處理器
511‧‧‧一階快取記憶體
512‧‧‧二階快取記憶體
513‧‧‧處理器核心
514‧‧‧暫存器
515‧‧‧記憶體控制器/單獨記憶體控制器
520‧‧‧實體電腦記憶體
521‧‧‧作業系統
522‧‧‧應用程式
523‧‧‧實體電腦記憶體/系統
524‧‧‧程式資料
525‧‧‧緩衝區資料
530‧‧‧記憶體匯流排
550‧‧‧壓縮硬體/專用壓縮硬體/處理器
553‧‧‧描述符先進先出
554‧‧‧暫存器
555‧‧‧壓縮硬體緩衝區
1010‧‧‧可用緩衝區/緩衝區
1020‧‧‧可用緩衝區/緩衝區
1030‧‧‧未使用空間
1040‧‧‧內部片段儲存
1060‧‧‧可用緩衝區/緩衝區
1070‧‧‧可用緩衝區/緩衝區
1080‧‧‧可用緩衝區/緩衝區
1090‧‧‧未使用空間
1095‧‧‧內部片段儲存
1110‧‧‧可用緩衝區/緩衝區
1120‧‧‧緩衝區
1140‧‧‧內部片段儲存
1160‧‧‧可用緩衝區
1170‧‧‧可用緩衝區/緩衝區
1180‧‧‧可用緩衝區/緩衝區
1195‧‧‧內部片段儲存
110‧‧‧記憶體管理程式
120‧‧‧壓縮硬體
130‧‧‧壓縮硬體緩衝區
140‧‧‧實體電腦記憶體
145‧‧‧壓縮命令
150‧‧‧未經壓縮資料
155‧‧‧經壓縮資料
160‧‧‧經壓縮資料/位置
165‧‧‧經壓縮資料/位置
170‧‧‧經壓縮資料
175‧‧‧選擇之緩衝區
200‧‧‧描述符先進先出/循環描述符先進先出
210‧‧‧讀取索引
220‧‧‧完成索引
230‧‧‧空閒索引
240‧‧‧寫入索引
250‧‧‧色彩位元
260‧‧‧佇列項目
500‧‧‧例示性運算裝置/運算裝置
501‧‧‧極基本組態/基本組態
510‧‧‧處理器/應用處理器
511‧‧‧一階快取記憶體
512‧‧‧二階快取記憶體
513‧‧‧處理器核心
514‧‧‧暫存器
515‧‧‧記憶體控制器/單獨記憶體控制器
520‧‧‧實體電腦記憶體
521‧‧‧作業系統
522‧‧‧應用程式
523‧‧‧實體電腦記憶體/系統
524‧‧‧程式資料
525‧‧‧緩衝區資料
530‧‧‧記憶體匯流排
550‧‧‧壓縮硬體/專用壓縮硬體/處理器
553‧‧‧描述符先進先出
554‧‧‧暫存器
555‧‧‧壓縮硬體緩衝區
1010‧‧‧可用緩衝區/緩衝區
1020‧‧‧可用緩衝區/緩衝區
1030‧‧‧未使用空間
1040‧‧‧內部片段儲存
1060‧‧‧可用緩衝區/緩衝區
1070‧‧‧可用緩衝區/緩衝區
1080‧‧‧可用緩衝區/緩衝區
1090‧‧‧未使用空間
1095‧‧‧內部片段儲存
1110‧‧‧可用緩衝區/緩衝區
1120‧‧‧緩衝區
1140‧‧‧內部片段儲存
1160‧‧‧可用緩衝區
1170‧‧‧可用緩衝區/緩衝區
1180‧‧‧可用緩衝區/緩衝區
1195‧‧‧內部片段儲存
依據對以下實施方式之一研究結合隨附申請專利範圍及圖式,本發明之此等及其他目標、特徵及特性對熟習此項技術者而言將變得更加顯而易見,上述全部內容形成此說明書之一部分。在圖式中: 圖1係圖解說明一系統中之實例性資料流程之一資料流程圖,該系統根據一或多項實施例用於管理硬體協助資料壓縮之實體電腦記憶體片段儲存。 圖1B係包含由根據一實例性實施例之壓縮硬體進行之一選擇之一圖式。 圖1C係包含由根據一實例性實施例之壓縮硬體進行之一選擇之一圖式。 圖2係根據一或多項實施例在一壓縮操作期間用於一記憶體管理程式與壓縮硬體之間的通信之一實例性描述符FIFO佇列。 圖3係圖解說明根據一或多項實施例用於在資料壓縮期間管理實體電腦記憶體片段儲存之一實例性程序之一流程圖。 圖4係圖解說明根據一或多項實施例用於實體電腦記憶體中之資料之硬體協助壓縮之一實例性程序之一流程圖。 圖5係圖解說明一實例性運算裝置之一方塊圖,該實例性運算裝置經配置以根據一或多項實施例用於管理硬體協助資料壓縮之實體電腦記憶體片段儲存。 圖6係與由根據一實例性實施例之壓縮硬體接收之一壓縮命令有關之一電腦實施之方法之一流程圖。 圖7係用於將儲存於根據一實例性實施例之實體電腦記憶體中之至少兩個緩衝區中之經壓縮資料解壓縮之一電腦實施之方法之一流程圖。 圖8係與由根據一實例性實施例之壓縮硬體接收之一壓縮命令有關之一電腦實施之方法之一流程圖。 圖9係與由根據一實例性實施例之壓縮硬體接收之一壓縮命令有關之一電腦實施之方法之一流程圖。 本文中所提供之標題僅出於方便目的且未必影響本發明中所主張內容之範疇或意義。 在圖中,為易於理解及方便起見,相同元件符號及任何縮寫字識別具有相同或類似結構或功能性之元件或者具有相同或類似功能性之動作。在以下實施方式之過程中將詳細闡述各圖。
Claims (20)
- 一種電腦實施之方法,其包括: 在壓縮硬體處接收一壓縮命令,該壓縮命令包含待壓縮資料在實體電腦記憶體中之一位址及用於儲存由該壓縮硬體輸出之經壓縮資料之可用緩衝區之一識別,該等可用緩衝區具有不同大小; 使用該所接收位址自該實體電腦記憶體擷取未經壓縮資料; 由該壓縮硬體判定該經壓縮資料之一大小; 由該壓縮硬體選擇該所接收壓縮命令中識別之該等可用緩衝區中之一或多者來在其中儲存該經壓縮資料;及 由該壓縮硬體將與該未經壓縮資料、該經壓縮資料及/或該等可用緩衝區相關聯之資訊傳達至一記憶體管理程式。
- 如請求項1之電腦實施之方法,其進一步包括: 由該壓縮硬體將自該實體電腦記憶體擷取之該未經壓縮資料壓縮成經壓縮資料,其中基於該經壓縮資料之一大小而判定用於儲存該經壓縮資料之該緩衝區大小。
- 如請求項1之電腦實施之方法,其中該壓縮硬體基於在該經壓縮資料儲存於該等可用緩衝區中之該一或多者中之後該等可用緩衝區中之該一或多者中將剩餘之一未使用空間量而選擇該等可用緩衝區中之該一或多者來在其中儲存該經壓縮資料。
- 如請求項1之電腦實施之方法,其中該一或多個選定緩衝區之大小不同於該等可用緩衝區中之至少一個其他緩衝區。
- 如請求項1之電腦實施之方法,其中與該未經壓縮資料、該經壓縮資料及/或該等可用緩衝區相關聯之該資訊包含以下各項中之至少一者:該經壓縮資料之一大小、該經壓縮資料之一狀態、該未經壓縮資料之一狀態或選擇了該等可用緩衝區中之哪些可用緩衝區來儲存該經壓縮資料。
- 如請求項5之電腦實施之方法,其中該經壓縮資料之一狀態包含以下各項中之至少一者:自該實體電腦記憶體擷取之該資料係可壓縮的、該經壓縮資料儲存於該一或多個選定緩衝區中、該經壓縮資料被複製至該一或多個選定緩衝區或該經壓縮資料未被複製至該一或多個選定緩衝區。
- 如請求項5之電腦實施之方法,其中該未經壓縮資料之一狀態包含以下各項中之至少一者:該未經壓縮資料係不可壓縮的、該未經壓縮資料被複製至一單個目的地緩衝區或該未經壓縮資料被複製於多個目的地緩衝區且在該多個目的地緩衝區之間被分離。
- 如請求項1之電腦實施之方法,其進一步包括: 回應於該使用該所接收位址自該實體電腦記憶體擷取該未經壓縮資料,判定該未經壓縮資料係不可壓縮的;及 將該未經壓縮資料儲存至一或多個目的地緩衝區。
- 如請求項8之電腦實施之方法,其中基於經壓縮資料之該大小大於一臨限量而判定該未經壓縮資料係不可壓縮的。
- 如請求項1之電腦實施之方法,其進一步包括: 由該壓縮硬體選擇該所接收壓縮命令中識別之該等可用緩衝區中之至少兩者來在其中儲存該經壓縮資料,其中該等選定緩衝區中之每一者之大小不同於該等選定緩衝區中之至少一個其他緩衝區。
- 如請求項10之電腦實施之方法,其進一步包括: 由該壓縮硬體基於使在該經壓縮資料儲存於該等可用緩衝區中之至少兩者中之後該至少兩個可用緩衝區中將剩餘之一未使用空間量最小化而選擇該至少兩個可用緩衝區,其中該至少兩個可用緩衝區中之每一者之大小不同於該至少兩個可用緩衝區中之至少一個其他緩衝區。
- 如請求項11之電腦實施之方法,其進一步包括: 由該壓縮硬體回應於來自該記憶體管理程式之一解壓縮命令而將該至少兩個選定可用緩衝區解壓縮。
- 一種用於將儲存於實體電腦記憶體中之至少兩個緩衝區中之經壓縮資料解壓縮之電腦實施之方法,該電腦實施之方法包括: 在壓縮硬體處自在一處理器而非該壓縮硬體上執行之一記憶體管理程式接收一解壓縮命令,其中該解壓縮命令包含該至少兩個緩衝區之一識別及實體電腦記憶體中用於儲存由該壓縮硬體輸出之經解壓縮資料之一目的地位址,且其中該至少兩個緩衝區中之每一者之大小不同於該至少兩個緩衝區中之至少一個其他緩衝區; 由該壓縮硬體藉由將儲存於該至少兩個緩衝區中之該經壓縮資料解壓縮而輸出經解壓縮資料; 將由該壓縮硬體輸出之該經解壓縮資料儲存於實體電腦記憶體中之該目的地位址處;及 由該壓縮硬體將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式。
- 如請求項13之電腦實施之方法,其中該由該壓縮硬體將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式包含以下各項中之至少一者:通知一已完成解壓縮、通知一解壓縮錯誤、在一暫存器中更新一解壓縮狀態、產生一中斷或將一解壓縮狀態寫入至實體電腦記憶體中之一位址。
- 一種裝置,其包括: 一處理器; 實體電腦記憶體; 壓縮硬體,其與該處理器通信;及 一記憶體管理程式,其將一壓縮命令提供至該壓縮硬體,該壓縮命令包含待壓縮資料在該實體電腦記憶體中之一位址及用於儲存由該壓縮硬體輸出之經壓縮資料之複數個可用緩衝區之一清單,該等緩衝區具有不同大小,該壓縮硬體經組態以: 使用該壓縮命令中所包含之該位址來擷取未經壓縮資料; 將該未經壓縮資料壓縮成經壓縮資料;及 自可用緩衝區之該清單選擇至少兩個緩衝區來儲存經壓縮資料,其中自該清單選擇之該至少兩個緩衝區中之每一者之大小不同於未自該清單選擇的該等緩衝區中之至少一個其他緩衝區。
- 如請求項15之裝置,其中自該清單選擇之該至少兩個緩衝區係基於在該經壓縮資料儲存於自該清單選擇之該至少兩個緩衝區中之情況下自該清單選擇之該至少兩個緩衝區中將剩餘之一未使用空間量而選擇。
- 如請求項15之裝置,其中該壓縮硬體經組態以將該經壓縮資料之一大小、該經壓縮資料之一狀態、該未經壓縮資料之一狀態及/或自可用緩衝區之該清單選擇了哪些緩衝區來儲存經壓縮資料傳達至該記憶體管理程式。
- 如請求項15之裝置, 其中該記憶體管理程式將一解壓縮命令提供至該壓縮硬體,該解壓縮命令包含: 實體電腦記憶體中用於儲存由該壓縮硬體輸出之經解壓縮資料之一目的地位址;及 實體電腦記憶體中之至少兩個資料緩衝區之一清單,其中經壓縮資料儲存於該至少兩個資料緩衝區中,且其中該至少兩個資料緩衝區中之每一者之大小不同於該至少兩個資料緩衝區中之至少一個其他資料緩衝區;且 其中該壓縮硬體經組態以: 藉由將儲存於該至少兩個資料緩衝區中之該經壓縮資料解壓縮而輸出經解壓縮資料; 將該經解壓縮資料儲存於實體電腦記憶體中之該目的地位址處;及 將與該經解壓縮資料相關聯之資訊傳達至該記憶體管理程式。
- 如請求項18之裝置,其中該壓縮硬體經組態以將一已完成解壓縮之資訊、一解壓縮錯誤之資訊、解壓縮狀態之一更新及/或回應於一解壓縮操作之一中斷傳達至該記憶體管理程式。
- 如請求項18之裝置,其中自該清單選擇之該至少兩個緩衝區係基於使在該經壓縮資料儲存於自該清單選擇之該至少兩個緩衝區中之後自該清單選擇之該至少兩個緩衝區中將剩餘之一未使用空間量最小化而選擇。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662298836P | 2016-02-23 | 2016-02-23 | |
US62/298,836 | 2016-02-23 | ||
US15/394,621 | 2016-12-29 | ||
US15/394,621 US10474385B2 (en) | 2016-02-23 | 2016-12-29 | Managing memory fragmentation in hardware-assisted data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201738753A true TW201738753A (zh) | 2017-11-01 |
TWI656443B TWI656443B (zh) | 2019-04-11 |
Family
ID=59631138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106106111A TWI656443B (zh) | 2016-02-23 | 2017-02-23 | 用於管理硬體協助資料壓縮之記憶體片段儲存之方法及裝置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10474385B2 (zh) |
EP (1) | EP3420458B1 (zh) |
CN (1) | CN108139972B (zh) |
TW (1) | TWI656443B (zh) |
WO (1) | WO2017146898A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474385B2 (en) | 2016-02-23 | 2019-11-12 | Google Llc | Managing memory fragmentation in hardware-assisted data compression |
US20190065088A1 (en) * | 2017-08-30 | 2019-02-28 | Micron Technology, Inc. | Random access memory power savings |
US20200302284A1 (en) * | 2019-03-18 | 2020-09-24 | Nvidia Corporation | Data compression for a neural network |
JP2020154525A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステムおよび情報処理システム |
CN111506265A (zh) * | 2020-04-10 | 2020-08-07 | 上海交通大学 | 一种基于硬件的块层数据压缩框架 |
CN113885787B (zh) * | 2021-06-08 | 2022-12-13 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
US20240036726A1 (en) * | 2022-07-27 | 2024-02-01 | Rambus Inc. | Memory compression |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729668A (en) | 1995-09-15 | 1998-03-17 | Hewlett-Packard Company | Optimized hardware compression and decompression architecture for use by an image processor in a laser printer |
US5761536A (en) | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
US8619866B2 (en) * | 2009-10-02 | 2013-12-31 | Texas Instruments Incorporated | Reducing memory bandwidth for processing digital image data |
GB0918373D0 (en) | 2009-10-20 | 2009-12-02 | Advanced Risc Mach Ltd | Memory interface compression |
US8738962B2 (en) | 2010-11-17 | 2014-05-27 | International Business Machines Corporation | Memory mirroring with memory compression |
JP2013214832A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム |
US10565099B2 (en) | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9274951B2 (en) * | 2013-05-31 | 2016-03-01 | Altera Corporation | Cache memory controller for accelerated data transfer |
US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US10474385B2 (en) | 2016-02-23 | 2019-11-12 | Google Llc | Managing memory fragmentation in hardware-assisted data compression |
-
2016
- 2016-12-29 US US15/394,621 patent/US10474385B2/en active Active
-
2017
- 2017-02-07 CN CN201780003237.7A patent/CN108139972B/zh active Active
- 2017-02-07 EP EP17706063.9A patent/EP3420458B1/en active Active
- 2017-02-07 WO PCT/US2017/016799 patent/WO2017146898A1/en unknown
- 2017-02-23 TW TW106106111A patent/TWI656443B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN108139972A (zh) | 2018-06-08 |
WO2017146898A1 (en) | 2017-08-31 |
EP3420458B1 (en) | 2021-11-10 |
US10474385B2 (en) | 2019-11-12 |
EP3420458A1 (en) | 2019-01-02 |
US20170242614A1 (en) | 2017-08-24 |
CN108139972B (zh) | 2023-02-28 |
TWI656443B (zh) | 2019-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI656443B (zh) | 用於管理硬體協助資料壓縮之記憶體片段儲存之方法及裝置 | |
CN106354425B (zh) | 基于数据属性的数据布局的方法和系统 | |
EP3036642B1 (en) | Hardware managed compressed cache | |
EP3309685B1 (en) | Method and apparatus for writing data to cache | |
JP2017506391A (ja) | Dram欠陥のカーネルマスキング | |
US20130250686A1 (en) | Semiconductor memory device, information processing system and control method | |
US20150347012A1 (en) | System and method of interleaving data retrieved from first and second buffers | |
TW201539187A (zh) | 快閃記憶體之壓縮、讀取方法及應用其方法的裝置 | |
US11042453B2 (en) | Database journaling method and apparatus | |
TW202040406A (zh) | 使用電路實現的軟體和用於金鑰—值儲存的方法 | |
US10963377B2 (en) | Compressed pages having data and compression metadata | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US9703795B2 (en) | Reducing fragmentation in compressed journal storage | |
TWI670595B (zh) | 主動錯誤更正失敗處理方法 | |
US10387579B2 (en) | Data pattern detecting device, semiconductor device including the same, and operating method thereof | |
WO2022068760A1 (zh) | 内存管理的方法及其装置 | |
US8788712B2 (en) | Compression block input/output reduction | |
US20240070120A1 (en) | Data processing method and apparatus | |
US10846023B2 (en) | Storage device and storage area management method for reducing garbage collection processing | |
US8799580B2 (en) | Storage apparatus and data processing method | |
US20140281147A1 (en) | Memory system | |
US10831656B2 (en) | System and method to improve input output command latency by dynamic size logical to physical caching | |
US11593010B2 (en) | Systems and methods for block-data clustering-based deduplication | |
US20240168877A1 (en) | Solving submission queue entry overflow with an additional out-of-order submission queue entry | |
US8886908B2 (en) | Management of multiple capacity types in storage systems |