TWI813876B - 解壓縮系統、記憶體系統以及解壓縮的方法 - Google Patents
解壓縮系統、記憶體系統以及解壓縮的方法 Download PDFInfo
- Publication number
- TWI813876B TWI813876B TW109113811A TW109113811A TWI813876B TW I813876 B TWI813876 B TW I813876B TW 109113811 A TW109113811 A TW 109113811A TW 109113811 A TW109113811 A TW 109113811A TW I813876 B TWI813876 B TW I813876B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- decompressor
- receiver
- read request
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 211
- 230000006837 decompression Effects 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims description 22
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000007906 compression Methods 0.000 claims description 27
- 230000006835 compression Effects 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 6
- 230000000052 comparative effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- 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/061—Improving I/O performance
-
- 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0661—Format or protocol conversion arrangements
-
- 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
-
- 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
-
- 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/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
-
- 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/6005—Decoder 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/6017—Methods or arrangements to increase the throughput
-
- 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/6047—Power optimization with respect to the encoder, decoder, storage or transmission
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)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一種解壓縮系統包括:第一記憶體,包括第一寫入埠以
及第一讀取埠,第一寫入埠被配置成自解壓縮器接收經解壓縮資料,第一讀取埠被配置成接收反向引用讀取請求,第一記憶體被配置成因應於在第一讀取埠處接收到反向引用讀取請求而將經解壓縮資料輸出至解壓縮器;以及第二記憶體,包括第二寫入埠,第二寫入埠電性耦合至第一寫入埠且被配置成接收經解壓縮資料,第二記憶體被配置成對經解壓縮資料進行緩衝以供接收器擷取。
Description
本揭露的實施例的態樣大體而言是有關於一種記憶體解壓縮系統。
目前,計算領域看起來正普遍經歷資料的增長。舉例而言,在某些應用(例如,視訊處理)中,所產生的資料看起來以指數速率增長。在某些情況下,此種資料增長速率已超過儲存系統的容量的增長。因此,許多計算系統以壓縮形式儲存資料。由於所儲存的資料可能需要以未壓縮形式使用,因此需要在可進一步處理之前對所儲存的資料進行解壓縮。
本揭露大體而言涉及一種解壓縮系統,所述解壓縮系統能夠藉由保持使獨立的記憶體(即,解壓縮寫入緩衝器)與具有一個讀取埠及一個寫入埠的雙埠記憶體(即,字典記憶體)並列而在解壓縮操作期間提供全效能讀取(full-performance read)。
根據本揭露的一些實施例,提供一種解壓縮系統,所述解壓縮系統包括:第一記憶體,包括第一寫入埠以及第一讀取埠,第一寫入埠被配置成自解壓縮器接收經解壓縮資料,第一讀取埠被配置成接收反向引用讀取請求,所述第一記憶體被配置成因應於在所述第一讀取埠處接收到所述反向引用讀取請求而將所述經解壓縮資料輸出至所述解壓縮器;以及第二記憶體,包括第二寫入埠,第二寫入埠電性耦合至所述第一寫入埠且被配置成接收所述經解壓縮資料,所述第二記憶體被配置成對所述經解壓縮資料進行緩衝以供接收器擷取。
在一些實施例中,所述第二記憶體更包括:第二讀取埠,被配置成接收未壓縮資料讀出請求,且被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料供應至所述接收器。
在一些實施例中,所述解壓縮系統更包括:控制器,被配置成產生所述反向引用讀取請求及所述未壓縮資料讀出請求。
在一些實施例中,所述第一記憶體的輸出耦合至所述解壓縮器,且所述第二記憶體的輸出耦合至所述接收器。
在一些實施例中,所述第一記憶體被配置成獨立於所述第二記憶體運作。
在一些實施例中,所述第一記憶體包括字典記憶體,所述字典記憶體被配置成儲存來自壓縮過程的字典值,所述壓縮過程是對由所述解壓縮器解壓縮的儲存資料實行的,且所述第二記憶體包括未壓縮鏡像寫入緩衝器。
在一些實施例中,所述第二記憶體的儲存容量小於所述第一記憶體的儲存容量。
在一些實施例中,所述第二記憶體的所述儲存容量是基於所述接收器的輸入資料速率與所述解壓縮器的輸出資料速率之間的資料速率失配。
根據本揭露的一些實施例,提供一種記憶體系統,所述記憶體系統包括:接收器;經壓縮資料記憶體,被配置成儲存經壓縮資料;解壓縮器,被配置成自所述經壓縮資料記憶體擷取所述經壓縮資料且因應於來自所述接收器的請求而產生經解壓縮資料;第一記憶體,包括第一寫入埠以及第一讀取埠,第一寫入埠被配置成自所述解壓縮器接收所述經解壓縮資料,第一讀取埠被配置成接收反向引用讀取請求,所述第一記憶體被配置成因應於在所述第一讀取埠處接收到所述反向引用讀取請求而將所述經解壓縮資料輸出至所述解壓縮器;以及第二記憶體,包括第二寫入埠,第二寫入埠電性耦合至所述第一寫入埠且被配置成接收所述經解壓縮資料,所述第二記憶體被配置成對所述經解壓縮資料進行緩衝以供所述接收器擷取。
在一些實施例中,所述第二記憶體更包括:第二讀取埠,被配置成接收未壓縮資料讀出請求,且被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料供應至所述接收器。
在一些實施例中,如請求項10所述的記憶體系統更包括:控制器,被配置成產生所述反向引用讀取請求及所述未壓縮
資料讀出請求,所述控制器包括能夠重新配置的處理器。
在一些實施例中,所述第一記憶體的輸出耦合至所述解壓縮器,且所述第二記憶體的輸出耦合至所述接收器。
在一些實施例中,所述第一記憶體被配置成獨立於所述第二記憶體運作。
在一些實施例中,所述第一記憶體包括字典記憶體,所述字典記憶體被配置成儲存來自壓縮過程的字典值,所述壓縮過程是對儲存於所述經壓縮資料記憶體處的所述經壓縮資料實行的,且所述第二記憶體包括未壓縮鏡像寫入緩衝器。
在一些實施例中,所述第二記憶體的儲存容量小於所述第一記憶體的儲存容量。
在一些實施例中,所述第二記憶體的所述儲存容量是基於所述接收器的輸入資料速率與所述解壓縮器的輸出資料速率之間的資料速率失配。
在一些實施例中,所述解壓縮器被配置成基於儲存於所述第一記憶體處的所述經解壓縮資料對來自所述經壓縮資料記憶體的後續經壓縮資料進行解壓縮。
根據本揭露的一些實施例,提供一種對記憶體系統中的儲存資料進行解壓縮的方法,所述方法包括:指示解壓縮器對經壓縮資料記憶體處的儲存資料進行解壓縮,以產生經解壓縮資料,所述儲存資料呈壓縮形式;將所述經解壓縮資料寫入至第一記憶體及第二記憶體;將反向引用讀取請求發送至所述第一記憶
體,所述第一記憶體被配置成因應於所述反向引用讀取請求而將所述經解壓縮資料輸出至所述解壓縮器;以及將未壓縮資料讀出請求發送至所述第二記憶體,所述第二記憶體被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料輸出至接收器。
在一些實施例中,所述第一記憶體的輸出耦合至所述解壓縮器,且所述第二記憶體的輸出耦合至所述接收器。
在一些實施例中,所述第一記憶體被配置成獨立於所述第二記憶體運作。
10:記憶體系統
20:傳送器
30:壓縮系統
40:記憶體
50、50-1:解壓縮系統
60:接收器
100:解壓縮器
110:控制器
120:第一記憶體/記憶體
120-1:字典記憶體
122、132:寫入埠
124、134:讀取埠
126:回饋線
130:第二記憶體/記憶體
140:仲裁器
200:對記憶體系統中的儲存資料進行解壓縮的過程
S202、S204、S206、S208:步驟
附圖不一定按比例繪製,且出於例示目的,在所有附圖中具有相似結構或功能的元件一般而言由相同的參考編號代表。附圖僅旨在有利於本文中所闡述的各種實施例的說明。附圖並未闡述本文中所揭露的教示內容的每一態樣且並未限制申請專利範圍的範圍。附圖與說明書一起例示本揭露的示例性實施例,且與本說明一起用於闡釋本揭露的原理。
圖1示出根據本揭露一些示例性實施例的記憶體系統的方塊圖。
圖2示出根據本揭露一些示例性實施例的記憶體解壓縮系統的方塊圖。
圖3示出根據本揭露一些示例性實施例的比較性解壓縮系統的方塊圖。
圖4示出根據本揭露一些示例性實施例的用於對記憶體系統中的儲存資料進行解壓縮的示例性操作的流程圖。
以下陳述的詳細說明旨在作為對根據本揭露而提供的解壓縮系統及方法的示例性實施例的說明,且並非旨在代表可用於構造或利用本揭露的唯一形式。本說明結合所例示的實施例陳述本揭露的特徵。然而應理解,旨在亦囊括於本揭露的範圍內的不同實施例亦可達成相同或等效的功能及結構。如本文其他地方所指出,相同的元件編號旨在指示相同的元件或特徵。
隨著資料量的持續增長,人們期望儲存系統以壓縮形式儲存資料。然而,隨著資料產生器及資料消耗器以未壓縮的形式生成及消耗資料,儲存解決方案越來越依賴於壓縮及解壓縮技術。然而,壓縮及解壓縮可能對依賴於此種儲存形式的系統提出更高的計算要求且可能提高功耗並引入延遲(例如,資料擷取延遲)。
本揭露大體而言是有關於在記憶體解壓縮期間提供相對高的通量及低延遲讀取能力以及較低功耗的解壓縮系統及記憶體系統。
圖1示出根據本揭露一些示例性實施例的記憶體系統10的方塊圖。
參照圖1,記憶體系統10包括傳送器20、壓縮系統30、
記憶體(例如,經壓縮資料記憶體)40、解壓縮系統50及接收器60。傳送器20及接收器60可處理未壓縮形式的資料。然而,在一些實例中,可能在傳送器20與接收器60之間傳輸大的資料。因此,由於用於儲存此種資料的記憶體40的容量有限,因此記憶體系統10可在將資料儲存於記憶體40處之前壓縮資料。之後,當接收器60對所儲存的資訊作出讀取請求時,記憶體系統10可對所儲存的資料進行解壓縮。
在一些實例中,記憶體系統10可為圖形處理系統,傳送器20可包括影像訊框緩衝器,來自傳送器20的資料可包括正在經歷圖形處理系統處理的影像資料,記憶體40可包括圖形處理單元的晶片上L2快取記憶體(on-chip L2 cache),且接收器60可包括另一處理單元,例如紋理單元。然而,本揭露的實施例並不限於此。舉例而言,在儲存裝置中,傳送器20及接收器60可代表主機過程(例如,主機電腦的使用者過程或系統過程),且記憶體40可為非揮發性記憶體裝置,例如固態驅動機(solid state drive,SSD)、硬碟驅動機(hard disk drive,HDD)等。在一些實例中,接收器60可包括外部儲存裝置。
壓縮系統30可對自傳送器20接收的資料塊(例如,紋理塊)實行壓縮(例如,固定速率壓縮或可變速率壓縮)。壓縮系統30可藉由如下方式來達成此種操作:對資料塊進行分析;對於每一單獨資料塊,獨立地確定相關聯的資料類型(例如,扁平資料類型(flat data type)、平面資料類型(planar data type)、小波
資料類型(wavelet data type)、樣條資料類型(spline data type)等)及相關聯的壓縮類型;以及根據相關聯的壓縮類型對每一資料塊進行壓縮。接著將此經壓縮資料儲存於記憶體40中。當接收器60請求與所儲存的經壓縮資料對應的未壓縮資料時,解壓縮系統50使用由壓縮系統30在壓縮期間產生的元資料及字典值來對所儲存的經壓縮資料進行解壓縮,並將未壓縮資料提供至接收器60。
圖2示出根據本揭露一些示例性實施例的解壓縮系統50的方塊圖。圖3示出根據本揭露一些示例性實施例的比較性解壓縮系統50-1的方塊圖。
參照圖2,解壓縮系統50可包括解壓縮器100、控制器(例如,解壓縮控制器)110、第一記憶體(例如,字典記憶體)120及第二記憶體(例如,未壓縮鏡像寫入緩衝器)130。第一記憶體120可與第二記憶體130分開(例如,作為分開的記憶體管芯),且可被配置成獨立於第二記憶體130運作(例如,處理讀取請求及寫入請求)。第一記憶體120及第二記憶體130中的每一者可具有單個寫入埠及單個讀取埠,用以(例如,自解壓縮器100)接收資料及請求。第一記憶體120的輸出可耦合至解壓縮器100且可不耦合至接收器60。此外,第二記憶體130的輸出可耦合至接收器60且可不耦合至解壓縮器100。第一記憶體120及第二記憶體130的讀取操作及寫入操作可由控制器110控制。控制器110可包括可重新配置的處理器,例如現場可程式化閘陣列
(field-programmable gate array,FPGA)、應用專用積體電路(application-specific integrated circuit,ASIC)等。
在一些實施例中,第一記憶體120可包括儲存來自由壓縮系統30實行的壓縮過程的字典值的字典記憶體。字典值可代表經壓縮資料中的壓縮模式(compression pattern),解壓縮器可使用所述壓縮模式來對所儲存的資料進行解壓縮。換言之,壓縮過程對輸入資料集中重複出現的模式或者值字串進行定位。在經壓縮輸出中對此種所偵測到的重複模式進行編碼以具有所偵測到的模式的一個引用副本(reference copy)且接著對此模式在輸入資料集中的所有後續出現均引用此副本。根據一些實例,字典值可包括用於重複資料塊的經壓縮資料的單個實例、代表畫素資料塊的一或多個值(例如代表扁平畫素塊的單個值)、其組合等。作為實例,當在文本輸入資料集中字串「大狗(big dog)」出現5次時,此輸入的經壓縮輸出可包含在第一實例中所複製的「大狗」,且其餘4個實例可被編碼成引用所複製的「大狗」。因此,「大狗」模式在輸入資料集中的五次出現將被減少為一個「大狗」模式及四個引用指標,藉此使經壓縮輸出大小相對於輸入資料集大小大幅減小。換言之,藉由根據反向引用指標對輸入資料集中的重複模式進行編碼,壓縮器可達成大的壓縮比率。第一記憶體120亦可儲存由解壓縮器100產生的經解壓縮資料,解壓縮器100可依賴經解壓縮資料來產生後續的經解壓縮資料。因此,在一些實施例中,第一記憶體120的輸出可藉由回饋線126耦合至解壓縮器100。
根據一些實施例,第二記憶體130可用作過渡緩衝器(transit buffer),過渡緩衝器可臨時儲存由解壓縮器100產生的經解壓縮資料以供後續由接收器60擷取。第二記憶體130的儲存容量可小於第一記憶體120的儲存容量,此乃因第二記憶體130可不儲存任何字典值且可被配置成儲存(例如,僅儲存)最近經解壓縮的資料。因此,第二記憶體130的容量可等於傳輸至接收器60的資料量。在一些實例中,第二記憶體的容量可由接收器60的輸入資料速率與解壓縮器100的輸出資料速率之間的資料速率失配來確定。第二記憶體130的容量可取決於與特定設計實施方式相關聯的突發緩衝量(amount of burst buffering)。舉例而言,接收器60可以較解壓縮器100的通量慢的速率處理資料。在此種實例中,解壓縮系統50可生成資料輸出且將資料輸出緩衝於第二記憶體130中,直至接收器60準備好讀取此資料為止。因此,解壓縮系統50可以第二記憶體130的形式實施一定量的突發緩衝,此使得即使資料的消耗方(即,接收器)可能正以較慢的速度運作,解壓縮系統50亦能夠繼續其運作。此處,第二記憶體130的固定大小可使其獨立於與壓縮方案相關聯的塊大小。塊大小可有助於減少解壓縮系統的整體記憶體資源使用。藉由將呈第一記憶體120形式的字典儲存與解壓縮系統50的輸出解耦合,第二記憶體130亦會改善發送至資料的消耗方(即,接收器60)的未壓縮輸出資料的延遲。
因應於來自接收器60的資料請求,解壓縮器100對儲存
於記憶體40中的經壓縮資料進行解壓縮。因此,解壓縮器100可將經解壓縮資料發送至第一記憶體120及第二記憶體130二者。如此一來,控制器110可藉由對經壓縮資料中包含的元資料進行解碼來對儲存於記憶體40處的經壓縮資料進行解譯。經壓縮資料的元資料可指示如何產生或生成後續的經解壓縮輸出資料。在一些實例中,此可能涉及將模式自經壓縮資料直接複製至經解壓縮資料或者自較早的經解壓縮資料輸出複製特定模式。在第一實例中,元資料可指示將輸入資料集中的當前8個位元組原樣複製至未壓縮輸出。在第二實例中,元資料可指示自先前未壓縮資料中的特定位置複製16個位元組。在第一實例中,控制器110可對第一記憶體120及第二記憶體130實行直接寫入。在第二實例中,控制器110可首先讀取先前經解壓縮資料中的適當位置(例如,藉由反向引用操作),且接著將資料寫入至第一記憶體120及第二記憶體130二者中的適當位置。此經解壓縮資料可由電性耦合(例如,系接)在一起的記憶體120及130各自的寫入埠122及132並行地接收(例如,同時接收)。根據一些實施例,控制器110控制並啟動向記憶體120及130二者寫入未壓縮資料。
在一些實例中,當對儲存於記憶體40上的資料進行解壓縮時,解壓縮器100可使用先前經解壓縮資料作為引用。根據一些實施例,控制器110可向第一記憶體120的讀取埠124發送反向引用讀取訊號(亦稱為反向引用讀取請求),控制器110向第一記憶體120發送訊號以將最新的經解壓縮資料輸出回解壓縮器
100以用於反向引用。此外,控制器110可維持第二記憶體130且可向讀取埠134發送未壓縮資料讀出請求,以指示第二記憶體130向接收器60釋放(例如,輸出)所緩衝的經解壓縮資料。此外,第二記憶體130的資料擷取操作可與第一記憶體120的反向引用操作解耦合,且當所儲存的資料未被壓縮時,經解壓縮資料可被提供給請求未壓縮資料的接收器60。
在一些實例中,用於擷取未壓縮資料並將其發送至接收器60的過程可不存取第一記憶體120;因此,讀取埠124的頻寬可專用於自反向引用資料(例如,儲存於第一記憶體120處的未壓縮資料)進行讀取的解壓縮過程。
藉由將反向引用讀取請求及未壓縮資料讀出請求發送至兩個獨立記憶體的兩個分開的讀取埠,反向引用操作及未壓縮資料讀出操作二者可以相對低的確定性延遲並行地(例如,同時地)實行,此可改善(例如,增大)解壓縮系統50的整體解壓縮速率。
此技術可與將兩個請求均發送至一個字典記憶體120-1的單個讀取埠124的比較例(參見圖3)形成對比。在此種比較例中,所述兩個請求可在讀取埠處由仲裁器(例如,多工器)140進行仲裁(例如,使用分時多工、循環優先級(round robin priority)、嚴格優先級及/或類似操作),此可增加解壓縮系統的複雜度。此外,由於一個操作必須在另一操作啟動之前完成,因此此種仲裁可引入額外的非確定性延遲。此可增加裝置的計算使用量並降低整體系統效能。此外,藉由利用可包括雙埠記憶體(而
非多埠記憶體)的第一記憶體120及第二記憶體130,可以相對低的成本實施解壓縮系統。另外,使記憶體120及130中的每一者實行一個任務(而非兩個)可減少對裝置的存取次數、降低功耗、並改善系統的整體穩健性(robustness)及可靠性。
圖4示出根據本揭露一些示例性實施例的用於對記憶體系統中的儲存資料進行解壓縮的過程200的示例性操作的流程圖。
參照圖3,根據一些實施例,當接收器60請求以壓縮形式儲存於記憶體40中的資料時,控制器110可指示解壓縮器100對所儲存的資料進行解壓縮以產生經解壓縮資料(S202)。控制器110可接著經由解壓縮器100將經解壓縮資料並行地寫入至第一記憶體120及第二記憶體130(S204)。在對後續儲存的資料進行解壓縮之前,控制器110可將反向引用讀取請求發送至第一記憶體120,此可提示第一記憶體120將經解壓縮資料輸出至解壓縮器100(S206)。另外,控制器110可將未壓縮資料讀出請求發送至第二記憶體130,此可提示第二記憶體130將所緩衝的經解壓縮資料輸出至接收器60(S208)。
因此,如上所述,所述解壓縮系統可減少(例如,最小化)具有未壓縮資料的記憶體所需的埠的數目。向接收器或資料消耗方發送資料時可不需要自晶片上字典記憶體進行讀取。此會減少讀取記憶體所需的代理的數目,進而可減少讀取埠、無需仲裁且降低複雜度。代理的此種減少可提高整體解壓縮速率,減少未壓縮資料的延遲並提供確定性延遲。
本文所用術語僅是出於闡述特定實施例的目的而並非旨在限制本發明概念。除非上下文清楚地另外指明,否則本文中所用的單數形式「一(a及an)」旨在亦包括複數形式。亦應理解,當在本說明書中使用用語「包括(include、including)」以及「包含(comprises、comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文中所用用語「及/或」包含相關列出項中的一或多個項的任意及所有組合。此外,當闡述本發明概念的實施例時使用的「可」是指「本發明概念的一或多個實施例」。另外,用語「示例性」旨在指實例或例示。
應理解,儘管在本文中可使用「第一(first)」、「第二(second)」、「第三(third)」等用語來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受限於該些用語。該些用語用於區分各個元件、組件、區、層或區段。因此,以下論述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段,而不背離本發明概念的精神及範圍。
應理解,當稱一元件或層位於另一元件或層「上(on)」、「連接至(connected to)」、「耦合至(coupled to)」或「相鄰於(adjacent to)」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至或直接相鄰於所述另一元件或層,或者可存在一或多個中間元件或層。當稱一元件或
層「直接(directly)」位於另一元件或層「上(on)」,「直接連接至(directly connected to)」、「直接耦合至(directly coupled to)」或「緊鄰於(immediately adjacent to)」另一元件或層時,則不存在中間元件或層。
本文中所使用的用語「使用(use)」、「正使用(using)」及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」及「被利用(utilized)」同義。
根據本文所述本揭露實施例的解壓縮系統及/或任何其他相關裝置或組件可利用任何合適的硬體、韌體(例如,應用專用積體電路)、軟體、或軟體、韌體、及硬體的組合來實施。舉例而言,可將獨立的多源顯示裝置(independent multi-source display device)的各種組件形成於一個積體電路(IC)晶片上或分開的IC晶片上。此外,可將壓縮系統的各種組件實施於可撓性印刷電路膜(flexible printed circuit film)、載帶封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或形成於同一基板上。此外,壓縮系統的各種組件可為在一或多個計算裝置中由一或多個處理器運行、執行電腦程式指令並與用於實行本文所述各種功能性的其他系統組件進行交互的過程或執行緒。電腦程式指令儲存於可在使用例如(舉例而言)隨機存取記憶體(random access memory,RAM)等標準記憶體裝置的計算裝置中實施的記憶體中。電腦程式指令亦可儲存於例如(舉例而言)光碟唯讀記憶體(compact disc read only memory,CD-ROM)、快閃
驅動器(flash drive)或類似元件等其他非暫態電腦可讀取媒體中。另外,熟習此項技術者應知,在不背離本揭露示例性實施例的精神及範圍的條件下,可將各種計算裝置的功能性組合或整合成單一的計算裝置,或者可使一特定計算裝置的功能性分佈於一或多個其他計算裝置之中。
儘管已具體參照本揭露的例示性實施例詳細闡述了本揭露,但是本文中闡述的實施例並非旨在為窮盡性的或將本揭露的範圍限制至所揭露的確切形式。本揭露所屬領域及技術中的技術人員將理解,可在不明顯背離如以下申請專利範圍及其等效形式所述的本揭露的原理及範圍的情況下,對所闡述的結構以及組裝及操作方法進行變更及改變。
200:對記憶體系統中的儲存資料進行解壓縮的過程
S202、S204、S206、S208:步驟
Claims (20)
- 一種解壓縮系統,包括:第一記憶體,包括:第一寫入埠,被配置成自解壓縮器接收經解壓縮資料,以及第一讀取埠,被配置成接收反向引用讀取請求,所述第一記憶體被配置成因應於在所述第一讀取埠處接收到所述反向引用讀取請求而將所述經解壓縮資料輸出至所述解壓縮器;以及第二記憶體,包括:第二寫入埠,電性耦合至所述第一寫入埠且被配置成接收所述經解壓縮資料,所述第二記憶體被配置成對所述經解壓縮資料進行緩衝以供接收器擷取。
- 如請求項1所述的解壓縮系統,其中所述第二記憶體更包括:第二讀取埠,被配置成接收未壓縮資料讀出請求,且被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料供應至所述接收器。
- 如請求項2所述的解壓縮系統,更包括:控制器,被配置成產生所述反向引用讀取請求及所述未壓縮資料讀出請求。
- 如請求項1所述的解壓縮系統,其中所述第一記憶體的輸出耦合至所述解壓縮器,且其中所述第二記憶體的輸出耦合至所述接收器。
- 如請求項1所述的解壓縮系統,其中所述第一記憶體被配置成獨立於所述第二記憶體運作。
- 如請求項1所述的解壓縮系統,其中所述第一記憶體包括字典記憶體,所述字典記憶體被配置成儲存來自壓縮過程的字典值,所述壓縮過程是對由所述解壓縮器解壓縮的儲存資料實行的,且所述第二記憶體包括未壓縮鏡像寫入緩衝器。
- 如請求項1所述的解壓縮系統,其中所述第二記憶體的儲存容量小於所述第一記憶體的儲存容量。
- 如請求項7所述的解壓縮系統,其中所述第二記憶體的所述儲存容量是基於所述接收器的輸入資料速率與所述解壓縮器的輸出資料速率之間的資料速率失配。
- 一種記憶體系統,包括:接收器;經壓縮資料記憶體,被配置成儲存經壓縮資料;解壓縮器,被配置成自所述經壓縮資料記憶體擷取所述經壓縮資料且因應於來自所述接收器的請求而產生經解壓縮資料;第一記憶體,包括:第一寫入埠,被配置成自所述解壓縮器接收所述經解壓縮資料;以及 第一讀取埠,被配置成接收反向引用讀取請求,所述第一記憶體被配置成因應於在所述第一讀取埠處接收到所述反向引用讀取請求而將所述經解壓縮資料輸出至所述解壓縮器;以及第二記憶體,包括:第二寫入埠,電性耦合至所述第一寫入埠且被配置成接收所述經解壓縮資料,所述第二記憶體被配置成對所述經解壓縮資料進行緩衝以供所述接收器擷取。
- 如請求項9所述的記憶體系統,其中所述第二記憶體更包括:第二讀取埠,被配置成接收未壓縮資料讀出請求,且被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料供應至所述接收器。
- 如請求項10所述的記憶體系統,更包括:控制器,被配置成產生所述反向引用讀取請求及所述未壓縮資料讀出請求,所述控制器包括能夠重新配置的處理器。
- 如請求項10所述的記憶體系統,其中所述第一記憶體的輸出耦合至所述解壓縮器,且其中所述第二記憶體的輸出耦合至所述接收器。
- 如請求項10所述的記憶體系統,其中所述第一 記憶體被配置成獨立於所述第二記憶體運作。
- 如請求項10所述的記憶體系統,其中所述第一記憶體包括字典記憶體,所述字典記憶體被配置成儲存來自壓縮過程的字典值,所述壓縮過程是對儲存於所述經壓縮資料記憶體處的經壓縮資料實行的,且所述第二記憶體包括未壓縮鏡像寫入緩衝器。
- 如請求項10所述的記憶體系統,其中所述第二記憶體的儲存容量小於所述第一記憶體的儲存容量。
- 如請求項15所述的記憶體系統,其中所述第二記憶體的所述儲存容量是基於所述接收器的輸入資料速率與所述解壓縮器的輸出資料速率之間的資料速率失配。
- 如請求項10所述的記憶體系統,其中所述解壓縮器被配置成基於儲存於所述第一記憶體處的所述經解壓縮資料對來自所述經壓縮資料記憶體的後續經壓縮資料進行解壓縮。
- 一種對記憶體系統中的儲存資料進行解壓縮的方法,所述方法包括:指示解壓縮器對經壓縮資料記憶體處的儲存資料進行解壓縮,以產生經解壓縮資料,所述儲存資料呈壓縮形式;將所述經解壓縮資料寫入至第一記憶體及第二記憶體;將反向引用讀取請求發送至所述第一記憶體,所述第一記憶體被配置成因應於所述反向引用讀取請求而將 所述經解壓縮資料輸出至所述解壓縮器;以及將未壓縮資料讀出請求發送至所述第二記憶體,所述第二記憶體被配置成因應於所述未壓縮資料讀出請求而將所述經解壓縮資料輸出至接收器。
- 如請求項18所述的方法,其中所述第一記憶體的輸出耦合至所述解壓縮器,且其中所述第二記憶體的輸出耦合至所述接收器。
- 如請求項18所述的方法,其中所述第一記憶體被配置成獨立於所述第二記憶體運作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962860619P | 2019-06-12 | 2019-06-12 | |
US62/860,619 | 2019-06-12 | ||
US16/539,842 US11048413B2 (en) | 2019-06-12 | 2019-08-13 | Method for reducing read ports and accelerating decompression in memory systems |
US16/539,842 | 2019-08-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202046097A TW202046097A (zh) | 2020-12-16 |
TWI813876B true TWI813876B (zh) | 2023-09-01 |
Family
ID=73744789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109113811A TWI813876B (zh) | 2019-06-12 | 2020-04-24 | 解壓縮系統、記憶體系統以及解壓縮的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11048413B2 (zh) |
KR (1) | KR102531613B1 (zh) |
TW (1) | TWI813876B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961617A (en) * | 1997-08-18 | 1999-10-05 | Vadem | System and technique for reducing power consumed by a data transfer operations during periods of update inactivity |
US20030217206A1 (en) * | 2002-05-13 | 2003-11-20 | Poo Teng Pin | System and apparatus for compressing and decompressing data stored to a portable data storage device |
US6961057B1 (en) * | 2000-10-12 | 2005-11-01 | Nvidia Corporation | Method and apparatus for managing and accessing depth data in a computer graphics system |
US20090103125A1 (en) * | 2007-10-23 | 2009-04-23 | Fuji Xerox Co., Ltd. | Decoding apparatus, image processing apparatus, recording medium, and decoding method |
TW201518944A (zh) * | 2013-08-16 | 2015-05-16 | Lsi Corp | 主機與控制器之間的轉換層劃分 |
US20170269851A1 (en) * | 2016-03-18 | 2017-09-21 | Qualcomm Incorporated | Priority-based access of compressed memory lines in memory in a processor-based system |
US20180088829A1 (en) * | 2016-09-29 | 2018-03-29 | Qualcomm Incorporated | Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895431B2 (en) | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
US9063561B2 (en) | 2009-05-06 | 2015-06-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Direct memory access for loopback transfers in a media controller architecture |
US8527707B2 (en) | 2009-12-25 | 2013-09-03 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
US8291359B2 (en) * | 2010-05-07 | 2012-10-16 | International Business Machines Corporation | Array concatenation in an integrated circuit design |
US9940230B2 (en) * | 2010-10-22 | 2018-04-10 | Cnex Labs, Inc. | Compression and decompression of data at high speed in solid state storage |
WO2013101114A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Later stage read port reduction |
US9753666B2 (en) | 2015-03-27 | 2017-09-05 | Intel Corporation | Efficient data compression for solid-state memory |
US20170206172A1 (en) * | 2016-01-19 | 2017-07-20 | SK Hynix Inc. | Tehcniques with os- and application- transparent memory compression |
-
2019
- 2019-08-13 US US16/539,842 patent/US11048413B2/en active Active
-
2020
- 2020-03-03 KR KR1020200026394A patent/KR102531613B1/ko active IP Right Grant
- 2020-04-24 TW TW109113811A patent/TWI813876B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961617A (en) * | 1997-08-18 | 1999-10-05 | Vadem | System and technique for reducing power consumed by a data transfer operations during periods of update inactivity |
US6961057B1 (en) * | 2000-10-12 | 2005-11-01 | Nvidia Corporation | Method and apparatus for managing and accessing depth data in a computer graphics system |
US20030217206A1 (en) * | 2002-05-13 | 2003-11-20 | Poo Teng Pin | System and apparatus for compressing and decompressing data stored to a portable data storage device |
US20090103125A1 (en) * | 2007-10-23 | 2009-04-23 | Fuji Xerox Co., Ltd. | Decoding apparatus, image processing apparatus, recording medium, and decoding method |
TW201518944A (zh) * | 2013-08-16 | 2015-05-16 | Lsi Corp | 主機與控制器之間的轉換層劃分 |
US20170269851A1 (en) * | 2016-03-18 | 2017-09-21 | Qualcomm Incorporated | Priority-based access of compressed memory lines in memory in a processor-based system |
US20180088829A1 (en) * | 2016-09-29 | 2018-03-29 | Qualcomm Incorporated | Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays |
Also Published As
Publication number | Publication date |
---|---|
US11048413B2 (en) | 2021-06-29 |
KR20200142447A (ko) | 2020-12-22 |
US20200393970A1 (en) | 2020-12-17 |
TW202046097A (zh) | 2020-12-16 |
KR102531613B1 (ko) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223520B2 (en) | External memory controller node | |
KR20200087713A (ko) | 적응형 기입 버퍼 해제를 이용한 스토리지 미디어 프로그래밍 | |
JP2006099774A (ja) | データ処理方法および装置、処理システム、コンピュータ処理システム、コンピュータのネットワーク | |
US9836248B2 (en) | In-memory data compression complementary to host data compression | |
US20230273749A1 (en) | Latency and throughput centric reconfigurable storage device | |
US20240134541A1 (en) | Storage device operation orchestration | |
TWI813876B (zh) | 解壓縮系統、記憶體系統以及解壓縮的方法 | |
CN112083875B (zh) | 用于在存储系统中减少读取端口并加速解压缩的方法 | |
US20220027297A1 (en) | Computing tile | |
US11418361B2 (en) | Master device, system and method of controlling the same | |
US20130103918A1 (en) | Adaptive Concentrating Data Transmission Heap Buffer and Method | |
CN110764710A (zh) | 低延迟高iops的数据访问方法与存储系统 | |
US8868674B2 (en) | Streaming and bulk data transfer transformation with context switching | |
CN113994314B (zh) | 扩展存储器接口 | |
JP2011022877A (ja) | 情報処理装置および方法 |