TW202107856A - 轉換編碼器及進行轉換編碼的方法及製品 - Google Patents
轉換編碼器及進行轉換編碼的方法及製品 Download PDFInfo
- Publication number
- TW202107856A TW202107856A TW109112659A TW109112659A TW202107856A TW 202107856 A TW202107856 A TW 202107856A TW 109112659 A TW109112659 A TW 109112659A TW 109112659 A TW109112659 A TW 109112659A TW 202107856 A TW202107856 A TW 202107856A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- encoded data
- input
- dictionary
- chunk
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 83
- 238000006243 chemical reaction Methods 0.000 claims description 165
- 238000013507 mapping Methods 0.000 claims description 88
- 238000012545 processing Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 8
- 238000012856 packing Methods 0.000 description 37
- 230000006835 compression Effects 0.000 description 22
- 238000007906 compression Methods 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 230000008901 benefit Effects 0.000 description 13
- 238000013519 translation Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005056 compaction Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage 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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/157—Transformation using dictionaries or tables
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
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)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種轉換編碼器。轉換編碼器可包括用以儲存輸入已編碼資料的緩衝器。索引映射器可將輸入字典映射至輸出字典。當前編碼緩衝器可儲存可回應於輸入已編碼資料、輸入字典以及自輸入字典至輸出字典的映射的修改後的當前已編碼資料。先前編碼緩衝器可儲存可回應於輸入已編碼資料、輸入字典以及自輸入字典至輸出字典的映射的修改後的先前已編碼資料。規則評估器可因應於當前編碼緩衝器中的修改後的當前已編碼資料、先前編碼緩衝器中的修改後的先前已編碼資料以及轉換編碼規則而生成輸出串流。
Description
本發明概念大體而言是有關於儲存裝置,且更具體而言,是有關於對儲存裝置內的資料進行轉換編碼。
[相關申請案資料]
本申請案主張在2019年4月16日提出申請的美國臨時專利申請案第62/834,900號、在2019年12月9日提出申請的美國臨時專利申請案第62/945,877號及在2019年12月9日提出申請的美國臨時專利申請案第62/945,883號的權益,所有該些申請案均出於所有目的而併入本案供參考。
本申請案是有關於在2020年3月16日提出申請的同在申請中的美國專利申請案第16/820,665號,所述美國專利申請案出於所有目的而併入本案供參考。
例如固態驅動機(Solid State Drive,SSD)等儲存裝置可儲存相對大量的資料。主機處理器可向SSD請求資料以對資料執行操作。視連接主機處理器與SSD的具體架構而定,將此資料傳輸至主機處理器可能需要相對大量的時間。例如,若主機處理器與SSD是使用第三代快捷週邊組件互連介面(Peripheral Component Interconnect Express,PCIe)的4個通道(lane)被連接,則在SSD與主機處理器之間可載運的最大資料量為約每秒4十億位元組(GB)。
仍需要減少發送至主機的資料量且利用行式格式(columnar format)的益處。
根據示例性實施例,一種轉換編碼器(transcoder)包括:緩衝器,用以儲存輸入已編碼資料(input encoded data);索引映射器(index mapper),用以自輸入字典映射至輸出字典;當前編碼緩衝器,用以儲存修改後的當前已編碼資料,所述修改後的當前已編碼資料是回應於所述輸入已編碼資料、所述輸入字典以及自所述輸入字典至所述輸出字典的映射;先前編碼緩衝器,用以儲存修改後的先前已編碼資料,所述修改後的先前已編碼資料是回應於先前輸入已編碼資料、所述輸入字典以及所述自所述輸入字典至所述輸出字典的映射;以及規則評估器,用以因應於所述當前編碼緩衝器中的所述修改後的當前已編碼資料、所述先前編碼緩衝器中的所述修改後的先前已編碼資料以及轉換編碼規則而生成輸出串流。
根據示例性實施例,一種方法包括:在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊(chunk);確定主機電腦對所述第一資料組塊感興趣;至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;確定所述主機電腦對所述第二資料組塊不感興趣;至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
根據示例性實施例,一種製品(article)包括:非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得:在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊;確定主機電腦對所述第一資料組塊感興趣;至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;確定所述主機電腦對所述第二資料組塊不感興趣;至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
現在將詳細參照本發明概念的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,闡述諸多具體細節以使得能夠透徹地理解本發明概念。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、組件、電路、及網路予以詳細闡述,以避免使實施例的態樣不必要地模糊不清。
應理解,儘管本文中可能使用「第一」、「第二」等用語來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。例如,在不背離本發明概念的範圍的條件下,可將第一模組稱為第二模組,且類似地,可將第二模組稱為第一模組。
本文中在對本發明概念的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本發明概念。除非上下文中另外清楚地指明,否則在對本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包含複數形式。亦應理解,本文所用用語「及/或(and/or)」指代且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。圖式中的組件及特徵未必按比例繪製。
將某一處理能力放置於離SSD較近之處(例如,使用現場可程式化閘陣列(Field Programmable Gate Array,FPGA)、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)、圖形處理單元(Graphics Processing Unit,GPU)或某一其他處理器)會帶來一些優勢。第一,SSD與近處理器之間的連接可較SSD與主機處理器之間的連接支援更高的頻寬,進而允許更快的資料傳送。第二,藉由使主機處理器不必處理資料,主機處理器可在所述近處理器處置資料處理的同時施行其他功能。
然而當資料被壓縮或編碼時,對資料的近儲存器處理(near-storage processing)具有潛在的缺點。為對原始資料進行操作,一些近儲存器處理器可在其能夠對資料進行操作之前先對資料進行解壓縮或解碼。此外,近儲存器處理器可將結果報告回至主機處理器。若結果中被發送至主機處理器的資料量大於原始資料量,則藉由使用近儲存器處理器所帶來的好處可能會失去,或者在最壞的情形下,會使得發送至主機處理器的資料較起初原本發送至主機處理器的已壓縮或已編碼資料更多。
另外,雖然可籠統地對資料進行轉換編碼,然而當資料是以行式格式儲存時,可進行一些調適以利用行式格式。
對呈壓縮格式的資料的近資料處理可能會抵消卸載(offload)的一些好處。若SSD與主機處理器之間的連接支援傳輸X位元組/秒,資料是使用壓縮比率Y被壓縮,且被選擇進行傳輸的資料量為Z,則由近處理器發送至主機處理器的資料量可能為X * Y * Z。若此乘積小於X,亦即若Y * Z < 1,則加速(近處理)可為有益的。
在本發明概念的一些實施例中,行式儲存可使用資料編碼(例如,運行長度編碼(Run Length Encoding,RLE))及/或壓縮(壓縮(高速))來減少儲存佔用面積。編碼,而非壓縮,可提供主要的熵減少。編碼之後的壓縮比率往往是小的(約小於2)。
在本發明概念的一些實施例中,例如,至少部分地基於編碼演算法,可在不擴大結果(亦即,使得發送至主機處理器的結果較原本發送至主機處理器的已編碼原始資料更大)的情況下對已編碼資料進行近處理。可在不擴大結果的情況下使用的編碼演算法可包括但不限於字典壓縮、前綴編碼(Prefix Encoding)、運行長度編碼(RLE)、叢集編碼(Cluster Encoding)、稀疏編碼(Sparse Encoding)及間接編碼(Indirect Encoding):其他編碼演算法亦可結合本發明概念的實施例使用。雖然以下所述的本發明概念實施例可著重於RLE及位元打包(Bit Packing),然而本發明概念的實施例可擴展至涵蓋其他編碼演算法。
亦存在附加問題:如何教轉換編碼器過濾什麼資料。在減小所儲存資料大小的字典可能儲存於除資料儲存位置之外的某處的情況下,此尤其成問題。行式儲存,即此種儲存格式的實例,簡化了對感興趣資料的定位。然而,由於字典可能儲存於與資料分開的某處,因此系統可能需要能夠定位字典以及所討論資料來執行轉換編碼。
本發明概念的實施例使得能夠過濾已編碼資料而不擴大資料。可使用轉換規則、使用嵌入於已編碼資料中的編碼資訊對已過濾資料進行重新編碼。本發明概念實施例中的轉換編碼器可過濾已編碼資料並修改發送至主機的編碼。因此,並非主機必須處理普通資料(視壓縮演算法及/或已編碼資料的有效性而定,所述普通資料相對於已編碼/已壓縮資料可為非常大的),而是主機可接收及處理已編碼資料。由於主機與儲存裝置之間的頻寬可具有限制,此將本質上影響傳輸資料所花費的時間,因此與發送普通資料(已過濾或未過濾)相較,發送已編碼資料可節省處理時間。
循環緩衝器(Circular Buffer)可儲存足夠一次處理的資料。本發明概念的實施例可將循環緩衝器替換成使用其他結構的緩衝器。
索引映射器可提供自輸入字典映射至欲與輸出串流一起使用的簡化字典映射的映射。
當前編碼緩衝器可根據適當的編碼儲存自輸入串流讀取的資料。使用來自轉換編碼規則、當前編碼緩衝器及先前編碼緩衝器的資訊,規則評估器可決定如何處理當前編碼緩衝器中的資料。視當前編碼緩衝器中的資料是否可與先前編碼緩衝器中的資料組合,規則評估器可基於當前編碼緩衝器中的資料來更新先前編碼緩衝器,輸出先前編碼緩衝器(並將先前編碼緩衝器替換成當前編碼緩衝器),或者採取某一其他動作。例如,若轉換編碼器已識別出當前編碼緩衝器中被認為是「不理會(don’t care)」值(以下會進一步論述)的值,則該些值可與先前編碼緩衝器中現有的「不理會」值組合。
串流分離器可用於識別輸入串流中使用不同編碼形式被編碼的不同部分(串流)。若使用單個編碼方案,則編碼方案可作為參數(即,編碼類型)被傳遞。否則,若使用多個編碼方案(即,不使用編碼類型),則給定串流的編碼方案是藉由查核輸入串流本身來確定。例如,以行式儲存格式編碼儲存的資料的第一位元組可包含編碼類型資訊。對於RLE與位元打包的混合,若最低有效位元(Least Significant Bit,LSB)是0,則編碼類型= RLE;若LSB是1,則編碼類型=位元打包。
作為各種編碼形式如何工作的實例,考量RLE及位元打包(Bit Packing,BP)。在RLE中,使用可變無符號整數來表示值被重複的頻率,然後給出固定長度的值。因此,例如,並非發送00000011 00000011 00000011 00000011 00000011 00000011 00000011 00000011 00000011(十進制值3的9個複本),而是可將資料編碼為00001001(十進制值9)00000011(十進制值3),進而指示00000011應重複9次。
在BP中,被確定佔用較少空間的資料可與其他值組合。例如,若資料通常使用8個位元來儲存,則儲存4個值會佔用總共32個位元。然而,若已知值各自佔用不多於4個位元,則可將二個值儲存於單個位元組中:簡言之,此即為位元打包。由於指示什麼資料被打包及什麼資料未被打包會存在某一開銷,因此空間的節省較所述情形少一點,但仍為有益的。
編碼包括無符號位元組中的群組數目,隨後是一或多個位元組中的已打包值清單。群組中值的最大數目可為8,且群組的最大數目可為63。因此,例如,為了表示資料00000000 00000001 00000000 00000001 00000000 00000001 00000000 00000001(十進制值0 1 0 1 0 1 0 1),可將群組定義為0000001(群組1)00010000(0、1)00010000(0、1)00010000(0、1)00010000(0、1)。
如上所述,RLE(及其他編碼)可使用可變無符號整數。可變無符號整數亦可使用編碼。在每一個八位元群組中,最高有效位元可指示當前位元組是值中的最後一個位元組還是存在至少一個後續位元組。在使用多個位元組的情況下,首先呈現最低有效位元組,且最後呈現最高有效位元組。因此,例如,十進制值1可被表示為00000001,十進制值2可被表示為00000010,依此類推,直至01111111(十進制值127)。十進制值128可被表示為10000000 00000001,十進制值129可被表示為10000000 00000010,等等。本質上,二進制值被劃分成由7個位元形成的群組,其中除最高有效群組之外,每一由7個位元形成的群組前面均有1。例如,十進制值16,384可被表示為10000000 10000000 00000001。
當使用轉換編碼器處理已編碼資料時,一些資料可能被認為是「不理會」資料。亦即,可能存在對於正執行的操作沒有價值的一些資料。作為轉換編碼器的操作結果,被認為是「不理會」資料的資料可被映射至不同的值。
考量其中資料庫儲存各種人的公民身份資訊的情況。公民身份可使用字串(例如「China」、「Korea」、「India」、「United States」等)來儲存。然而,由於公民身份的可能值是自有限集合得到的,因此可使用字典來減少資料庫中儲存的資料量。因此,例如,值「0」可表示China(中國),值「1」可表示India(印度),值「2」可表示Korea(韓國),且值「3」可表示United States(美國),其中將代表值(索引)而非國家名稱儲存於資料庫中。由於存在195個國家(截至2019年7月19日),因此可使用一個位元組來儲存索引,此遠少於使用每字元一個位元組來儲存國家名稱的字串時將使用的位元組。
然而,正執行的加速操作可能對美國公民感興趣:例如,所述操作可為對資料庫中美國公民的數目進行計數。因此,其他國家的公民與所述操作無關:他們是「不理會」值。轉換編碼器可映射字典及索引,以反映操作所適用的資料。
行式格式可使用RLE或位元打包來對資訊進行編碼。鑒於以行式儲存格式儲存的值字串的一部分,可使用一個位元來指示資料是使用RLE還是位元打包被儲存;然後可相應地理解其餘的資料。
為了理解根據本發明概念實施例的轉換編碼器可如何為已編碼資料提供替換字典,考量其中資料包括大量人的公民身份資訊的情況。由於每一人作為其公民的國家的名稱非常長,但國家名稱的數目相對小(甚至表示200個國家亦將僅佔用約8個位元,此相對於以國家名稱中每字元一個位元組來儲存每一公民的國家名稱字串而言仍為顯著的節省),因此字典提供了所儲存資料量的有意義的減少。此種編碼可使用任何所期望的編碼方案:例如,RLE編碼、字典壓縮、前綴編碼、位元打包、叢集編碼、稀疏編碼及間接編碼。
現在,若所應用的述詞(資料的過濾)只是定位美國的公民,則與其他公民相關的資料不被感興趣。例如,主機可能對知曉資料庫中有多少美國公民感興趣。作為轉換的結果,字典可被簡化成針對美國公民的一個條目(亦可存在針對「不理會」條目的隱式或顯式條目),且RLE編碼可被「壓縮」以組合針對非美國的各個國家的公民的相鄰RLE條目。因此,資料的編碼被壓縮成包括1(或2)列的字典。實際已編碼資料亦可減少,乃因與非美國公民相關的資料可索引至新字典中的單個條目。因此,藉由將述詞下推至轉換編碼器中,可過濾已編碼資料,並提供新的編碼,以減少最終發送至主機的資料量。字典映射可表示原字典至轉換編碼字典的映射。
可使用現場可程式化閘陣列(FPGA)來實作轉換編碼器(以及其他特徵),然而本發明概念的實施例可包括其他實作形式,包括例如特殊應用積體電路(ASIC)、圖形處理單元(GPU)或某一其他執行軟體的處理器。另外,儲存器內計算(in-storage compute,ISC)控制器可與FPGA分開,或者其亦可被實作為FPGA的一部分。
鑒於欲被執行加速功能(例如過濾)的特定檔案,ISC控制器可使用檔案2區塊映射(File2Block Map)來識別檔案上儲存檔案資料的區塊以及其次序。ISC控制器可被實作為主機內的組件(與儲存裝置本身分開),或者可為作為儲存裝置一部分的控制器。可存取該些區塊,以提供可(經由輸入緩衝器)輸入至轉換編碼器中的輸入串流。
當檔案是以行式格式儲存時,資料單位可為行組塊,行組塊本身可包括數個資料頁面。亦即,輸入緩衝器可自儲存裝置中的儲存模組接收行組塊,使得轉換編碼器可對所述行組塊進行操作。一般而言,每一行組塊可包括其自己的元資料,所述元資料可指定用於所述行組塊的編碼方案及/或欲應用於所述行組塊中的資料的字典。然而,並非所有的儲存格式均使用此種排列:例如,行式儲存格式可在檔案的單獨區域中儲存元資料(而不是在每一行組塊內):此種元資料可指定整個檔案所使用的編碼及字典。因此,當使用此種行式儲存格式來儲存檔案時,ISC控制器可自檔案的元資料區域(使用檔案2區塊映射進行定位)擷取編碼及字典,並將所述資訊提供至轉換編碼器,而非假設轉換編碼器將自行組塊接收任何所期望的資訊。(當然,當使用行式儲存格式時,行組塊中可能不存在字典頁面。)注意,雖然相同的編碼方案可適用於每一行組塊,然而所述編碼方案本身可為混合方案,即利用二或更多個不同的編碼方案並視情況在其之間進行切換。例如,混合編碼方案可將RLE編碼與位元打包組合。
除了確定字典及編碼方案之外,ISC控制器亦可提取欲應用於已編碼資料的述詞,且可將所述述詞下推至轉換編碼器。然後,轉換編碼器可以各種方式使用所有此種資訊。例如,關於與檔案一起使用的編碼的資訊可用於選擇欲與資料一起使用的轉換編碼規則,而字典及述詞可用於產生轉換編碼字典及字典映射。
述詞評估器(Predicate Evaluator)可使用述詞來判斷字典中的什麼條目是被感興趣的及什麼條目是不被感興趣的,生成儲存感興趣的值(以及可能表示「不理會」條目的值)的轉換編碼字典、以及將索引自原字典映射至轉換編碼字典的字典映射。
若轉換編碼字典包括「不理會」值的條目,則此種操作是在技術上向字典添加條目(乃因原字典不包括此種值)。添加此種條目可帶來新的問題。向轉換編碼字典添加「不理會」條目通常是在轉換編碼字典中的第一個條目(索引0)處發生,旨在表示與述詞不匹配的值。然而,為「不理會」條目創建新的值可為昂貴的:所揭露系統可掃描並重新映射整個字典(乃因所有現有的索引均相差1)。添加「不理會」條目亦可能導致記憶體重新分配或導致位元寬度溢出(bit width overflow):例如,若給定數目個位元的每一可能值已被用作字典索引,則向字典添加「不理會」條目可將用於表示索引的位元數目增加1。若資料頁面使用字典的一部分,則資料頁面可具有更小的位元寬度,且向轉換編碼字典添加「不理會」條目意味著在資料頁面中可能不能使用一個有效值。例如,若位元寬度為1,則添加「不理會」條目可涉及較可使用單個位元表示的值更多的值,而若位元寬度為2,則可能存在「不理會」條目的空間,而不會使位元寬度溢出。
此種問題的解決方案是判斷述詞下推是否將導致字典大小的任何減小。若字典將減少至少一個條目,則存在「不理會」條目的空間,而不用擔心位元寬度溢出。若字典將不會減少至少一個條目,則可將已編碼資料直接發送至ISC控制器/主機,而不執行轉換編碼,藉此避免轉換編碼可增加資料量的可能性。
注意,轉換編碼器的輸出可(經由輸出緩衝器)被發送回至ISC控制器。此起到二個目的。首先,雖然將述詞下推至轉換編碼器中可產生已轉換編碼的資料,但仍可能存在欲對已轉換編碼的資料執行的操作。例如,若主機試圖對檔案中的美國公民的數目進行計數,則已轉換編碼的資料將識別該些公民,但不對其進行計數:所述操作可由ISC控制器作為加速功能來執行。第二,可將已轉換編碼的資料發送回至主機用於進一步操作。ISC控制器與主機通訊,且因此為將已轉換編碼的資料發送至主機提供了路徑。
圖1示出根據本發明概念實施例包括可支援已編碼資料的轉換編碼的固態驅動機(SSD)的系統。在圖1中,可作為主機電腦的機器105可包括處理器110、記憶體115及儲存裝置120。處理器110可為任何種類的處理器。雖然圖1示出單個處理器110,然而機器105可包括任何數目的處理器,各處理器中的每一者可為單核心或多核心處理器,且可以任何所期望的組合進行混合。
處理器110可耦合至記憶體115。記憶體115可為任何種類的記憶體,例如快閃記憶體、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、持久性隨機存取記憶體、鐵電隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)、或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM)(例如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等)。記憶體115亦可為不同記憶體類型的任何所期望組合,且可由記憶體控制器125管理。記憶體115可用於儲存可被稱為「短期」的資料:即,預期不會儲存很長時間段的資料。短期資料的實例可包括臨時檔案、由應用本端地使用的資料(其可能是自其他儲存位置複製而來)等。
處理器110及記憶體115亦可支援作業系統,各種應用可在所述作業系統下運行。該些應用可發佈欲自記憶體115或儲存裝置120讀取資料或者向記憶體115或儲存裝置120寫入資料的請求。儘管記憶體115可用於儲存可被稱為「短期」的資料,然而儲存裝置120可用於儲存被認為是「長期」的資料:即,預期儲存很長時間段的資料。可使用裝置驅動器130來存取儲存裝置120。儲存裝置120可為任何所期望的形式,例如硬碟驅動機、固態驅動機(SSD)以及任何其他所期望的形式。
圖2示出圖1所示機器的細節。在圖2中,通常,機器105可包括一或多個處理器110,所述一或多個處理器110可包括記憶體控制器125及時鐘205,時鐘205可用於協調機器的組件的操作。處理器110亦可耦合至記憶體115,作為實例,記憶體115可包括隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)、或其他狀態保持媒體(state preserving media)。處理器110亦可耦合至儲存裝置120及網路連接器210,網路連接器210可例如為乙太網路連接器或無線連接器。處理器110亦可連接至匯流排215,匯流排215可附接有使用者介面220、及可使用輸入/輸出引擎225來管理的輸入/輸出介面埠、以及其他組件。
圖3示出圖1所示儲存裝置120與圖1所示處理器110使用不同的方法傳達相同的資料。在一種方法(傳統方法)中,可自儲存裝置120內的儲存器305(例如,其可為硬碟驅動機上的盤片(platter)或快閃記憶體儲存裝置(例如,SSD)中的快閃記憶體晶片)讀取資料,並將資料直接發送至處理器110。若儲存於儲存裝置120上的總資料(已編碼及/或已壓縮)是X
個位元組,則此即為欲發送至處理器110的資料量。請注意,此分析考量了儲存量是用於儲存已編碼及/或已壓縮的資料:未編碼及未壓縮的資料可能將是更大數目的位元組(否則對資料進行編碼及/或壓縮可能不存在益處)。因此,例如,若資料在未編碼及未壓縮時可使用約10 GB的儲存,但在被編碼及/或被壓縮時可使用約5 GB的儲存,則可將約5 GB的資料而非約10 GB的資料自儲存裝置120傳送至處理器110。
亦可在被提供用於傳送資料的頻寬(以及因此用於達成傳送的時間)方面考量自儲存器120至處理器110的資料傳送。若儲存於儲存裝置120上的資料被編碼及/或被壓縮,則當儲存於儲存裝置120上的資料可被直接發送至處理器110(藉由箭頭310示出)時,可以B
位元組/秒的有效速率發送儲存於儲存裝置120上的總資料。繼續較早的實例,考量其中儲存裝置120與處理器110之間的連接包括約1 GB/秒的頻寬的情形。由於已編碼及/或已壓縮的資料可佔用約5 GB的空間,因此可在約1 GB/秒的連接上於總共5秒內發送已編碼及/或已壓縮的資料。然而由於所儲存的總資料(在編碼及/或壓縮之前)為約10 GB,因此資料的有效傳輸速率B
為約2 GB/秒(乃因在約5秒內發送約10 GB的未編碼及未壓縮資料)。
對比之下,若使用儲存器內處理器315來預處理資料以試圖減少發送至處理器110的資料量,則可發送較少的原始資料(乃因儲存器內處理器315可對發送什麼資料更具選擇性)。另一方面,儲存器內處理器315可對資料進行解壓縮以處理所述資料(且亦可能對資料進行解碼)。因此,欲自儲存器內處理器315發送至處理器110的資料量可藉由資料選擇而減少,然而亦可能被增加壓縮(以及可能地編碼)量:在代數上,欲自儲存器內處理器315發送至處理器110(藉由箭頭320示出)的資料量可表達為X
*Y
*Z
十億位元組(Gbyte),其中X
是用於儲存已編碼及/或已壓縮資料的空間量,Y
是壓縮比率(使用壓縮(以及可能地編碼)減少了多少資料儲存),且Z
是選擇率(自未壓縮資料選擇了多少資料)。類似地,可將資料自儲存器內處理器315發送至處理器110的有效速率變為B
*Y
*Z
位元組/秒。
對二個公式的簡單比較表明,當X
*Y
*Z
<X
(或B
*Y
*Z
< B)時,即當Y
*Z
< 1時,使用儲存器內處理器315來選擇欲發送至處理器110的資料是優越的。否則,即使儲存器內處理器315未應用其選擇性,在由儲存器內處理器315進行預處理之後欲發送的資料量亦大於已編碼及/或已壓縮資料的量:只發送原已編碼及/或已壓縮資料將比使儲存器內處理器315嘗試選擇欲發送至處理器110的資料更高效。
圖4示出根據本發明概念實施例,圖1所示儲存裝置120與圖1所示處理器110傳達已轉換編碼的資料。在圖4中,已編碼及/或已壓縮資料儲存於儲存器305中(再次,儲存器305可代表硬碟驅動機中的盤片、快閃記憶體儲存裝置(例如SSD)中的快閃記憶體晶片、或某一其他實體資料儲存器)。此資料—已壓縮資料405—可被傳遞至解壓縮器410,解壓縮器410可對所述資料進行解壓縮,進而產生已解壓縮資料415。可使用硬體解壓縮或藉由在適當電路(例如通用處理器、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)或通用GPU(General Purpose GPU,GPU))上運行的軟體來實作解壓縮器410(亦被稱為解壓縮引擎)。已解壓縮資料415仍可被編碼,乃因編碼及壓縮可為分開的過程。已解壓縮資料415然後可被傳遞至轉換編碼器420,轉換編碼器420可對資料執行轉換編碼。轉換編碼可被認為是將資料自一種編碼轉換成另一種編碼的過程。
所有上述過程均可在儲存裝置120內發生。然而一旦轉換編碼器420已處理了已解壓縮資料415並產生了已轉換編碼的資料425,已轉換編碼的資料425便可被提供至主機電腦105。然後,解碼器430可對已轉換編碼的資料425進行解碼,藉此產生已過濾的普通資料435。然後,已過濾的普通資料435可被提供至處理器110,處理器110然後可對已過濾的普通資料435執行任何所期望的操作。
注意,對於解碼器430而言,對已轉換編碼的資料425進行解碼可涉及知曉關於對已轉換編碼的資料425應用的編碼的資訊。此資訊可例如包括在已轉換編碼的資料425中使用的特定編碼方案或者在已轉換編碼的資料425中使用的字典。雖然圖4未示出此資訊自儲存裝置120被傳遞至主機電腦105,然而此資訊可與已轉換編碼的資料425並行地(或者作為已轉換編碼的資料425的一部分)被傳遞至主機電腦105。當然,若已轉換編碼的資料425實際上未被編碼及未被壓縮(若轉換編碼器420的結果將使得發送較發送未編碼及未壓縮資料更大數目的實際位元組,則可能發生此種情況),則已轉換編碼的資料425可省略任何關於編碼方案或字典的資訊。
此時,可值得對編碼與壓縮之間的差異進行論述。此二個概念是相關的—均涉及試圖減少用於儲存資料的儲存量—但存在一些差異。編碼通常涉及使用為資料提供索引的字典,所述資料若被直接包含將為冗長的且具有相對低數目的相異值。例如,存在大約195個不同的國家。若資料儲存關於大量人的公民身份的資訊,則直接包含每一個人的國籍將會使用大量的空間:至少幾個位元組(假設國家的名稱中每字元一個位元組)。另一方面,值1至195均可使用單個位元組來表示。使用字典來表示國家(Country)的名稱並在資料中儲存適當國家名稱的索引可顯著減少欲儲存的資料量,而不會丟失任何資訊。例如,資訊「United States of America, United States of America, Korea, Korea, Korea, Korea, China, India, China, China, China, China, China, United States of America」可由表1所示的字典來代替地表示,進而使得所述資訊被表示為「3, 3, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 3」:自153個字元減少至40個字元。即使將字典的52個字元考量在內,簡單地使用字典亦得到顯著的節省。
表1
ID | Country |
0 | China |
1 | India |
2 | Korea |
3 | United States of America |
字典的價值可隨著字典的值數目變大而減小。例如,若存在1,000,000個不同的可能值,則每一索引可使用20個位元來儲存所述索引。當然,此可仍少於用於直接儲存值的位元數目,但編碼(相對於儲存未編碼的資料)的益處可減少。並且,若為資料中的每一條目儲存的值可為唯一的,或者若用於儲存索引的空間量與用於儲存值的空間量近似相同,則使用字典編碼實際上可增加欲儲存的資料量。繼續關於人的資料的實例,使用字典儲存他們的年齡並不較直接儲存年齡更高效。
另一方面,壓縮通常使用例如霍夫曼碼(Huffman code)等的編碼方案。可分析資料以確定每一資料的相對頻率,其中較短的碼被指派給較頻繁的資料,且較長的碼被指派給不太頻繁的資料。摩斯碼(Morse code)雖然不是霍夫曼碼,但其是對較頻繁的資料使用較短序列且對不太頻繁的資料使用較長序列的碼的眾所習知的實例。例如,字母「E」可由序列「點」(後跟空格)表示,而字母「J」可由序列「點劃線劃線劃線」(後跟空格)表示。(由於摩斯碼使用空格來表示一個符碼結束且另一符碼開始之處,一個符碼的序列可為另一符碼的序列的前綴(注意「E」由點表示,而「J」以點開始但包括其他符碼)。摩斯碼並非是恰當的霍夫曼碼。但許多人在某種程度上對摩斯碼熟悉,此使得其成為對較頻繁的資料使用較短符碼且對不太頻繁的資料使用較長符碼的碼的更普遍有用的實例。)
返回至編碼方案,一旦建立了字典,便存在可用於進一步對資料進行編碼的數個不同的編碼方案。此類編碼方案的實例包括運行長度編碼(RLE)、位元打包、前綴編碼、叢集編碼、稀疏編碼及間接編碼:本發明概念的實施例亦可使用其他編碼方案。此處會論述運行長度編碼及位元打包,乃因其稍後在各種實例中使用;可輕易找到關於其他編碼方案的資訊。
運行長度編碼(RLE)依賴於如下前提:值經常以群組的形式出現。並非單獨地儲存每一值,而是可將值的單個複本與表示所述值在資料中出現的頻率的數字一起儲存。例如,若值「2」在一列中出現四次,則並非儲存值「2」四次(此可使用四個位元組的儲存),而是可將值「2」與所述值的出現次數(「4」)一起儲存(此可使用二個位元組的儲存)。因此,繼續上述實例,序列「3, 3, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 3」可由「[2, RLE], 3, [4, RLE] 2, [1, RLE] 0, [1, RLE], 1, [5, RLE], 0, [1, RLE], 3」來表示。編碼「[2, RLE], 3」可被理解為意指存在使用RLE被編碼的資訊:值是「3」,且所述值重複二次;其他RLE編碼是類似的。(所述表示包含指示使用了RLE編碼的指示符的原因與對以下參照圖7所論述的混合編碼方案的潛在使用有關。)此序列可使用總共12個位元組:對於每一編碼,一個位元組儲存下一個值重複的次數,且一個位元組儲存欲重複的值。
與儲存原序列的14個位元組相較,12個位元組在儲存資料的空間量上並未大幅減少。但按比例而言,此種編碼表示此資料所需的儲存量減少約14%。甚至佔用約5 GB的資料所使用的儲存減少約14%亦為顯著的節省:可節省約700百萬位元組(MB)。
作為每一值出現次數的替代方案,可儲存每一群組的起始位置。當使用起始位置來代替每一值出現次數的計數時,資料可被表示為「[0, RLE], 3, [2, RLE] 2, [6, RLE] 0, [7, RLE], 1, [8, RLE], 0, [13, RLE], 3」。
以上論述闡述了其中使用RLE重複的值裝配至單個位元組中的情況。若不是此種情形呢:例如,若被重複的值是「1000」(「1000」可使用10個位元來儲存)呢?在此種情形中,RLE可將所述值序列化為由七個位元形成的群組。每一位元組中可為所述位元組中的最高有效位元的第八個位元可表示所述位元組是否在另一位元組中延續。
作為實例,考量值「1000」。在二進制中,值「1000」可被表示為「11 1110 1000」。由於此表示使用10個位元,因此所述值可能太大而無法儲存於單個位元組中。因此,所述值可分解成由七個位元形成的群組(添加前導零(leading zero),以使得每一群組包含七個位元):「0000111 1101000」。現在,可對序列中的第一個位元組前置「1」以指示其所表示的值在下一個位元組中延續,且可對序列中的第二個位元組前置「0」以指示所述值以所述位元組結束。因此,位元序列變成「10000111 01101000」。當系統讀取此位元序列時,系統可知曉查看每一位元組中的最高有效位元,以判斷所述值是延續超出所述位元組還是以所述位元組結束,並在將所述位元序列重新組合成值時移除所述位元。因此,「10000111 01101000」變成「0000001111101000」(添加了二個附加前導零,以使表示達到完整的二個位元組),進而允許恢復原值「1000」。
當然,若每一位元組中的一個位元用於識別所述位元組是否是值的延續,則所述位元可不用作所述值的一部分。因此,即使值可裝配至單個位元組中,亦可包括指示所述值不在另一位元組中延續的附加位元。另外,若所述值將裝配於8個位元中而非7個位元中(例如,128與255之間的值),則當使用指示值是否在下一個位元組中延續的位元時,可使用二個位元組來表示完整的值(乃因所述值的最高有效位元將在編碼中移位至下一個由7個位元形成的群組)。
當使用RLE時,可以任何所期望的次序呈現位元及/或位元組。例如,可自最高有效位元至最低有效位元或者自最低有效位元至最高有效位元來呈現位元;可以此二種方式中的任一種類似地對位元組進行排序。因此,例如,在位元組是自最低有效位元組至最高有效位元組呈現但每一位元組中的位元是自最高有效位元至最低有效位元呈現的情況下,使用延續位元(continuation bit),值「16384」可被編碼為「10000000 10000000 00000001」。可如下解譯此位元序列:每一位元組中的第一個位元是延續位元(其中「1」指示下一個位元組使所述值延續,且「0」指示所述值不在下一個位元組中延續)。在移除延續位元之後,剩餘的是「0000000 0000000 0000001」。當位元組是自最高有效位元組至最低有效位元組被重新排序(並被重構為傳統的由八個位元形成的群組,進而丟棄前導零)時,所述值變為「01000000 00000000」,此為值「16384」的二進制值。
另一方面,位元打包利用了值可使用較整個位元組少的位元的理念。例如,若欲儲存的值包括0、1、2及3,則可使用二個位元來表示每一值。雖然可使用完整的位元組來儲存每一值,然而使用完整的位元組意味著75%的儲存實際上未被使用。位元打包藉由在單個位元組(或位元組序列)中儲存多於一個值來利用此種現象。當值序列而非單個值重複時,位元打包特別有利。
作為實例,考量序列「0, 1, 0, 1, 0, 1, 0, 1」,並考量其中使用約四個位元來唯一地識別每一值(即,不使用大於15的值)的情況。並非單獨地儲存每一值(需要總共八個位元組),而是可使用編碼「[4, BP] 0, 1」。此種編碼表示單個位元組儲存四個表示值「0」的位元及四個表示值「1」的位元,然後所述位元組重複四次。(與RLE編碼一樣,位元打包編碼可包括指示資料是使用位元打包被編碼的指示符,以供在混合編碼方案中使用。)第一個位元組表示群組中資料欲重複的次數;第二個位元組儲存群組本身中的值。此種編碼可使用約二個位元組來儲存資料,進而使得用於所述序列的儲存量減少約75%。
當使用位元打包時,可以任何所期望的方式對資料進行打包。例如,當對其中每一值使用四個位元的序列「0, 1」進行打包時,所述序列可被表示為「00010000」(自最低有效位元至最高有效位元對值進行打包)或「00000001」(自最高有效位元至最低有效位元對值進行打包)。位元打包的一些實施方案可使用二種策略中的任一種,但然後反轉位元被放置至串流中的次序(以使得實際上是最低有效位元的部分首先通過)。在位元打包中亦可使用其他技術對位元進行打包。
當然,位元打包並不限制可裝配至單個位元組中的群組。與RLE一樣,位元打包中的值可使用位元來識別值是否在下一個位元組中延續。
由於編碼及壓縮均試圖減少用於儲存資料表示的空間量,因此其益處可並非是倍增的。編碼及壓縮均試圖減少用於儲存資料的空間量。然而一旦資料已以一種方式(例如編碼)被緊縮(compact),應用進一步的緊縮方案(例如壓縮)可能並不那麼有用了。壓縮可在資料被編碼之後應用於資料,且仍可在某種程度上減少所使用的儲存空間量,但壓縮對已編碼資料的影響可小於壓縮對未編碼資料的益處。(若對資料進行緊縮的每一種方案均可以同等的益處被應用,而不管被緊縮的資料如何,則人們可能希望藉由應用重複的緊縮方案而簡單地將任何資料縮減至小得可笑的大小。稍加思考即應易於明白,此種結果在真實世界中是不現實的。)
圖5示出圖1所示儲存裝置120的細節。在圖5中,儲存裝置120被示為SSD,然而本發明概念的實施例可支援被加以適當修改的其他形式的儲存裝置120。在圖5中,儲存裝置120可包括主機介面層(host interface layer,HIL)505、SSD控制器510及各種快閃記憶體晶片515-1至515-8(亦被稱為「快閃記憶體儲存器」),快閃記憶體晶片515-1至515-8可被組織成各種通道520-1至520-4。主機介面層505可管理儲存裝置120與圖1所示機器105之間的通訊。該些通訊可包括欲自儲存裝置120讀取資料的讀取請求及欲將資料寫入至儲存裝置120。SSD控制器510可使用快閃記憶體控制器(圖5中未示出)來管理對快閃記憶體晶片515-1至515-8的讀取操作及寫入操作以及垃圾收集(garbage collection)及其他操作。
SSD控制器510可包括轉譯層525(亦被稱為快閃轉譯層(flash translation layer,FTL))。轉譯層525可執行將由圖1所示機器105提供的邏輯區塊位址(logical block address,LBA)轉譯成SSD 120上實際儲存資料的實體區塊位址(physical block addresses,PBA)的功能。如此一來,圖1所示機器105可使用其自己的位址空間來引用資料,而不必知曉儲存裝置120上實際儲存資料的實體位址。當例如資料被更新時,此可為有益的:由於儲存裝置120可能不就地更新資料,因此儲存裝置120可使現有資料失效並將更新寫入至儲存裝置120上新的PBA。或者,若資料儲存於被選擇用於垃圾收集的區塊中,則可在所述區塊被抹除之前將資料寫入至儲存裝置120上新的區塊。藉由更新轉譯層525,圖1所示機器105在資料被移動至不同的PBA時被隔離而不受何處實際儲存資料的影響。
SSD控制器510亦可包括檔案至區塊映射(file to block map)530。檔案至區塊映射530可指定哪些區塊用於儲存哪些檔案的資料。例如,當資料以行式格式儲存時,可使用檔案至區塊映射530。檔案至區塊映射530可為轉譯層525的一部分(在此種情形中,檔案至區塊映射530可不被認為是儲存裝置120的單獨組件),或者檔案至區塊映射530可補充轉譯層525(例如,轉譯層525可用於使用相對較少數目的區塊的資料,而檔案至區塊映射可用於佔據相對較多數目的區塊的資料),或者檔案至區塊映射530可完全替換轉譯層525(在此種情形中,轉譯層525可不存在於SSD控制器510中)。
SSD控制器510亦可包括轉換編碼器420。然而,本發明概念的實施例可包括使轉換編碼器420位於儲存裝置120內的別處(例如,可在儲存裝置120內的某處使用通用處理器(運行合適的軟體)、FPGA、ASIC、GPU或GPGPU以及其他可能方案實作轉換編碼器420)或者甚至在儲存裝置120外部的配置。
儲存裝置120亦可包括圖3所示儲存器內處理器315(圖5中未示出),儲存器內處理器315可執行管控如何使用儲存於儲存裝置120上的資料的指令。圖3所示儲存器內處理器315亦可用於儲存器內計算功能,以在儲存裝置120上本端地執行操作,而非在圖1所示處理器110上執行操作。像轉換編碼器420一樣,可在儲存裝置120內的某處使用通用處理器(運行合適的軟體)、FPGA、ASIC、GPU或GPGPU以及其他可能方案或者甚至在儲存裝置120外部來實作圖3所示儲存器內處理器315。
雖然圖5將儲存裝置120示為包括被組織成四個通道520-1至520-4的八個快閃記憶體晶片515-1至515-8,然而本發明概念的實施例可支援被組織成任何數目的通道的任何數目的快閃記憶體晶片。類似地,雖然圖5示出SSD控制器510可包括轉換編碼器420及/或圖3所示儲存器內處理器315,然而本發明概念的實施例可以除圖5所示之外的方式配置有轉換編碼器420或圖3所示儲存器內處理器315。
圖6示出圖4所示轉換編碼器420的細節。在圖6中,轉換編碼器420可接收各種輸入(例如輸入字典、輸入串流及編碼類型),且產生各種輸出(例如輸出字典及輸出串流)。簡言之,轉換編碼器420可運作以獲取可使用由編碼類型指定的編碼方案被編碼的輸入串流,且可產生輸出串流。(雖然輸入串流可被編碼,然而以下論述考量其中輸入串流未被壓縮的情況:若輸入串流被壓縮,則輸入串流可在進一步處理之前被解壓縮。)輸出串流可使用與輸入串流相同的編碼方案來編碼,或者輸出串流可使用不同的編碼方案來編碼(或者二者兼具:如下所論述,當使用混合編碼方案時,一些資料可自一種編碼方案改變成另一種編碼方案)。
另外,即使編碼方案在輸入串流與輸出串流之間不變,編碼本身亦可改變。例如,若特定值在輸入字典中及輸出字典中被指派給不同的索引,則應在實際資料中使用的值中反映字典的改變。為此,轉換編碼器420亦可獲取輸入字典並將其映射至輸出字典。
表2
ID | Country |
0 | Don’t Care |
1 | United States of America |
作為此最後二點的實例,再次考量以上表1所示的字典。現在考量其中圖1所示主機電腦105對關於美利堅合眾國(United States of America)公民的資料感興趣的情況。表1可被視為輸入字典,乃因其表示在輸入串流中接收的資料。另一方面,表2可為輸出字典,表示輸出串流中的資料。關於表2,至少存在三點需注意。第一,與表1所示的四個條目相較,表2包括二個條目。第二,表2包括被標記為「Don’t Care(不理會)」的條目(但可使用任何其他名稱,乃因圖1所示主機電腦105此時對由對應值表示的資料不感興趣)。第三,儘管「United States of America(美利堅合眾國)」在表1中具有ID 3,然而「United States of America(美利堅合眾國)」在表2中具有ID 1。此最後一點暗示,在輸入串流中對ID 3的任何引用可在輸出串流中改變成引用ID 1(否則資料可能毫無意義)。
為了完成該些操作,轉換編碼器420可包括各種組件。轉換編碼器420可包括循環緩衝器605、串流分離器610、索引映射器615、當前編碼緩衝器620、先前編碼緩衝器625、轉換編碼規則630及規則評估器635。
循環緩衝器605可接收來自圖1所示儲存裝置120內的圖3所示儲存器305的資料串流。由於欲處理的整個資料可為大的(例如,幾十億位元組(gigabyte)或幾兆位元組(terabyte)的資料),因此試圖一次載入所有資料並將其作為一個單位在某一儲存器內進行處理可為不切實際的。因此,輸入串流可作為串流被接收並被緩衝,進而允許以較整個資料集小的單位來處理資料。雖然圖6將緩衝器605示為循環緩衝器,然而本發明概念的實施例可使用任何類型的緩衝器來儲存自輸入串流接收的資料。
串流分離器610可自循環緩衝器605獲取資料,並將所述資料劃分成組塊。然後,所述組塊可被傳遞至索引映射器615。組塊可表示欲由轉換編碼器420內的其他組件處理的資料單位,且不應與可在其他背景下使用的用語「組塊」相混淆(例如,可參照以下圖9使用的用語「行組塊(column chunk)」)。
圖7示出圖6所示串流分離器610將輸入已編碼資料劃分成組塊,所述輸入已編碼資料可為輸入串流的一部分(或全部)。在圖7中,輸入資料被示為除其他資料之外包括三條已編碼資料:「[1, BP], 3, 3、[4, RLE], 2、[5, RLE], 0」。如上所論述,該些組塊表示使用位元打包及RLE編碼方案被編碼的資料。此種編碼表示以下(未編碼的)值序列:「3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0」。對於每一單獨的編碼,圖1所示主機電腦105可能對所述資料(或所述資料的一部分)感興趣,或者圖1所示主機電腦105可能對所述資料不感興趣。圖1所示主機電腦105是否可對每一編碼中的值感興趣可取決於轉換編碼規則630:圖6所示串流分離器610可能不知曉圖1所示主機電腦105可對什麼資料感興趣。因此,圖6所示串流分離器610可將輸入資料串流劃分成組塊,其中每一組塊包括不同的一條已編碼資料。因此,組塊705-1可包括編碼「[1, BP], 3, 3」,組塊705-2可包括編碼「[4, RLE], 2」,且組塊705-3可包括編碼「[5, RLE], 0」。
關於圖7,至少存在附加的二點值得注意。第一,亦注意,在圖7所示的示例性輸入串流中,一些資料是使用位元打包被編碼,且一些資料是使用RLE被編碼。若所有資料是使用單個編碼方案(例如,RLE)被編碼,則圖6所示串流分離器610可自輸入至圖6所示轉換編碼器420的編碼類型確定所述事實。然而有時使用混合編碼方案。在混合編碼方案中,可使用一種編碼方案(例如RLE)對一些資料進行編碼,且可使用另一種編碼方案(例如位元打包)對一些資料進行編碼(所述概念亦可推廣至在混合編碼方案中使用多於二種編碼方案)。在混合編碼方案中,圖6所示轉換編碼器420可不接收編碼類型作為輸入,乃因所述資訊獨自不會告訴圖6所示串流分離器610以哪種編碼方案編碼了什麼資料。而是,圖6所示串流分離器610可藉由查看每一組塊本身來判斷對所述組塊使用了什麼編碼方案。
一種確定用於對特定組塊進行編碼的編碼方案的方式可為藉由查核組塊中特定位元的值。例如,行式儲存格式可使用第一位元組中的最低有效位元來指示特定資料組塊是可使用RLE還是位元打包來編碼:若所述位元的值可為「0」,則可使用RLE,且若所述位元的值可為「1」,則可使用位元打包。然後,可自位元組移除此位元,且使剩餘的位元在邏輯上向右移位一個位元,以產生編碼所使用的值。
例如,考量組塊705-1。組塊705-1將包括位元序列「00000011 00110011」。當圖6所示串流分離器610讀取第一個位元組「00000011」時,圖6所示串流分離器610可查核最低有效位元(最後一個「1」)。由於最低有效位元可為「1」,因此圖6所示串流分離器610可確定此組塊可使用位元打包被編碼。可移除此最低有效位元,且使第一個位元組中的剩餘位元在邏輯上向右移位一個位元,進而產生位元組「00000001」。由於此位元組的第一個(最高有效)位元可為「0」,因此圖6所示串流分離器610可確定所述位元組可僅為「00000001」(可移除指示值可不在下一個位元組中延續的「0」位元且添加另一前導零),進而指示群組(仍待確定)可重複一次。然後,圖6所示串流分離器610可讀取下一個位元組「00110011」。由於此位元組的最高有效位元可為「0」,因此圖6所示串流分離器610知曉此值不延續至下一個位元組中。可移除延續位元,並添加前導零,進而產生值「00110011」,其表示值「3」及「3」。因此,圖6所示串流分離器610可確定編碼使用位元打包來表示值「3」可重複二次。
另一方面,考量組塊705-2。組塊705-2將包括位元序列「00001000 00000010」。當圖6所示串流分離器610讀取第一個位元組「00001000」時,圖6所示串流分離器610可查核最低有效位元(最後一個「0」)。由於最低有效位元可為「0」,因此圖6所示串流分離器610可確定此組塊可使用RLE被編碼。可移除此最低有效位元,且使第一個位元組中的剩餘位元在邏輯上向右移位一個位元,進而產生位元組「00000100」。由於此位元組的第一個(最高有效)位元可為「0」,因此圖6所示串流分離器610可確定所述位元組可僅為「00000100」(可移除指示值可不在下一個位元組中延續的「0」位元且添加另一前導零),進而指示值(仍待確定)可重複四次。然後,圖6所示串流分離器610可讀取下一個位元組「00000010」。由於此位元組的最高有效位元可為「0」,因此圖6所示串流分離器610知曉此值不延續至下一個位元組中。可移除延續位元,並添加前導零,進而產生值「00000010」。因此,圖6所示串流分離器610可確定編碼使用RLE來表示值「2」可重複四次。
當然,圖6所示串流分離器610可能並不針對任一位元序列進行此種分析的全部。圖6所示串流分離器610可做的全部將是讀取位元組,直至其遇到具有「0」作為最高有效位元的位元組(此位元組序列將指示編碼方案及即將到來的值的重複次數),然後讀取位元組,直至其遇到具有「0」作為最高有效位元的另一位元組(此位元組序列將表示被編碼的值)。然後,圖6所示串流分離器610可將那些所讀取的位元(表示整個已編碼組塊)傳遞至圖6所示索引映射器615(且用於稍後由圖6所示規則評估器635處理):圖6所示索引映射器615(及/或圖6所示規則評估器635)可執行所闡述的分析,以判斷對所述組塊使用了什麼編碼方案以及什麼值被如此編碼。然而,若圖6所示串流分離器610(或者圖6所示索引映射器615或本發明概念的任何其他組件)執行分析以確定用於對特定資料組塊進行編碼的編碼方案,則圖6所示串流分離器610(或者圖6所示索引映射器615或其他組件)可將編碼類型沿線向下傳遞至其他組件,以避免重複此種分析。在處理組塊時自組塊移除識別編碼方案的位元的情況下,此種操作可特別重要:沒有編碼類型,稍後處理已編碼資料的組件可能無法正確處理已編碼資料。
第二,注意組塊705-2及705-3表示均使用RLE被編碼的連續組塊。可預期,圖6所示串流分離器610會將所有連續的RLE編碼認為是單個組塊(基於使用不同的編碼方案來分隔開組塊)。但回想起,目標是對輸入串流進行轉換編碼,以便將不感興趣的所有資料合併成單個「不理會」值。回想起,圖6所示串流分離器610可能不具有關於圖1所示主機電腦105對什麼資料感興趣的資訊。倘若圖6所示串流分離器610認為使用同一編碼方案的所有編碼是同一組塊,則圖6所示串流分離器610可最終將圖1所示主機電腦105感興趣的資料與圖1所示主機電腦105不感興趣的資料混合。另外,若輸入串流中的所有資料是使用同一編碼方案被編碼,則整個輸入串流將被認為是單個組塊,此將消除圖6所示串流分離器610作為圖6所示轉換編碼器420的一部分的效用。
第三,儘管以上論述著重於使用一個位元來區分二種不同編碼方案的混合編碼方案,然而本發明概念的實施例可被推廣至使用多於二種相異編碼方案的混合編碼方案。當然,若使用多於二種編碼方案,則可使用多於一個位元來區分不同的編碼方案。例如,若使用三種或四種編碼方案,則可使用二個位元來區分編碼方案,若使用五種、六種、七種或八種不同的編碼方案,則可使用三個位元來區分不同的編碼方案,等等。
(亦注意,用於區分編碼方案的位元亦可用於其他目的。例如,考量其中使用三種編碼方案的情況。若第一個位元組的最低有效位元具有特定值(例如「0」),則可使用一種編碼方案,例如RLE,其中下一個最低有效位元用於表示值。然而,若第一個位元組的最低有效位元具有另一特定值(例如「1」),則下一個最低有效位元可用於區分其餘二種編碼方案(例如位元打包及叢集編碼)。)
返回至圖6,索引映射器615可自串流分離器610接收組塊。然後,索引映射器615可將來自輸入字典的已編碼值映射至輸出字典中的已編碼值。例如,再次考量以上表1及表2中所示的字典。由於與「United States of America(美利堅合眾國)」對應的值可為被感興趣的,因此當在已編碼組塊中遇到值「3」時,可以值「1」來替換值「3」;當在已編碼組塊中遇到所有其他值時,可以值「0」來替換所有其他值。
圖8示出圖6所示索引映射器將輸入字典映射至輸出字典。在圖8中,示出索引映射器615接收輸入字典805並生成輸出字典810。鑒於關於圖1所示主機電腦105感興趣的資料的資訊,索引映射器615可生成輸出字典810。索引映射器亦可生成自輸入字典805至輸出字典810的映射。繼續上述實例,此映射可指定表3中所示的映射。可看出,索引「3」可映射至索引「1」;所有其他索引可映射至索引「0」。
表3
輸入索引 | 輸出索引 |
0 | 0 |
1 | 0 |
2 | 0 |
3 | 1 |
關於索引映射器615,存在幾點值得注意。第一,雖然索引映射器615被示為圖6所示轉換編碼器420的單獨組件,然而索引映射器615可連同圖6所示規則評估器635一起工作(或者被實作為規則評估器635的一部分)。第二,索引映射器615可如何生成輸出字典810(以及表3中所示的映射)可取決於圖1所示主機電腦105對什麼資料感興趣。以下參照圖11論述索引映射器可如何得知圖1所示主機電腦105對什麼資料感興趣。第三,對資料進行轉換編碼可涉及將輸入字典805映射至輸出字典810的索引映射器615及圖630所示轉換編碼規則630:圖6所示轉換編碼規則630可取決於自輸入字典805至輸出字典810的映射。反之則不然:自輸入字典805至輸出字典810的映射(以及因此索引映射器615的操作)可在不參照圖6所示轉換編碼規則630的情況下生成。
關於索引映射器615的第四點更微妙。注意,索引映射器615有效地向輸出字典810添加新的條目:「不理會」值。為使實作簡單,使索引映射器615始終對「不理會」值使用同一索引是有意義的。由於輸入字典805的大小可依據資料集而變化,因此可始終使用索引「0」。
然而,若結果是圖1所示主機電腦105對資料集中的所有資料均感興趣,會發生什麼?在此種情形中,索引映射器615已向輸出字典810添加條目,但輸出字典810中無條目被移除。此二個事實的組合意味著輸出字典810可較輸入字典805大(一個條目)。考量其中輸入字典805對於某一值n
具有恰好2 n
個條目的情況。此事實意味著可使用n
個位元來表示輸入字典805中的每一索引。將「不理會」條目添加至輸出字典810意味著現在在輸出字典810中存在2 n
+ 1個條目,此意味著現在使用n
+ 1個位元來表示資料集中所有可能的值:此問題被稱為位元溢出(bit overflow)。此附加位元可影響已編碼資料,進而需要添加新的位元來恰當地表示資料。因此,對輸出字典810的單個小改變可能對資料表示產生巨大的波紋效應,且可能使用於表示已編碼資料的儲存量顯著增加。
雖然上述實例著重於其中引入「不理會」條目會添加新的位元來表示輸出字典810中所有可能的索引的情況,然而甚至當輸出字典810的大小增加至可使用新的位元來表示所有可能的索引的程度時,亦可發生類似的問題。再次考量表1所示的輸入字典,並考量其中圖1所示主機電腦105對中國及印度公民感興趣的情況(表1中的索引「0」及「1」)。可使用單個位元來表示該些索引(乃因可使用一個位元來表示值「0」及「1」)。若該些值是使用位元打包被編碼,則可將八個此種值打包成單個位元組。然而,若在輸出字典810中索引「0」被指派給「不理會」值,則中國及印度的索引將映射至其他值(例如,「1」及「2」)。由於值「2」使用二個位元,因此可能無法再將八個值打包成單個位元組:已發生位元溢出。
對於位元溢出問題存在幾種可使用的解決方案。一種是進行檢查以查看輸入字典805中的任何索引是否表示圖1所示主機電腦105不感興趣的資料。若結果是主機電腦105對輸入字典805中的所有資料感興趣,則根本沒必要對輸入串流進行轉換編碼,且輸入串流可不加修改地直接映射至輸出串流。
然而此種解決方案雖然有用,但可能還不夠,乃因在位元打包中仍可能發生位元溢出問題。為了避免位元打包中的位元溢出,解決方案可為確保使用於表示輸出字典810中任何索引的位元數目不大於用於表示輸入字典805中任何索引的位元數目。此處闡述二種可能的解決方案。一種解決方案可為將輸出字典810中的最高可能索引指派給「不理會」值:亦即,首先將輸入字典805中所有感興趣的索引映射至輸出字典810,然後對「不理會」值使用最低未使用的索引。另一種解決方案可為識別輸入字典805中圖1所示主機電腦105不感興趣的索引,並使用所述索引作為「不理會」值。在此二種解決方案中,輸入字典805中的任何索引均不會被替換成輸出字典810中的更大索引,此可避免位元溢出問題。此類解決方案的缺點是可能無法為「不理會」選擇獨立於輸入字典805的索引。
再次返回至圖6,當前組塊(可能由索引映射器615處理)可儲存於當前編碼緩衝器620中。自那裡,規則評估器635可評估當前編碼緩衝器620中的已編碼資料以及先前編碼緩衝器625中的已編碼資料,且判斷是否應改變編碼以及應將什麼資料輸出至輸出串流。簡言之,規則評估器635可判斷當前編碼緩衝器620中的已編碼資料是否可與先前編碼緩衝器625中的已編碼資料組合。若是,則可將當前編碼緩衝器620中的已編碼資料添加至先前編碼緩衝器625中的已編碼資料;否則,可將先前編碼緩衝器625中的已編碼資料輸出至輸出串流,且可將當前編碼緩衝器620中的已編碼資料移動至先前編碼緩衝器625。(此種分析考量了其中先前編碼緩衝器625中存在資料的情況。若先前編碼緩衝器625不包含資料,例如對於第一資料組塊可能發生此種情形,則無需考慮嘗試將當前編碼緩衝器620中的已編碼資料與先前編碼緩衝器625中的已轉換編碼的資料組合。)
此引出下一個問題:已編碼資料何時可被組合?簡短的回答是,當已編碼資料組塊二者均表示圖1所示主機電腦105感興趣的資料或者均表示主機電腦105不感興趣的資料時,可組合所述組塊。一些實例可幫助說明規則評估器635如何運作。在二個實例中,輸入串流包括相同的資料:「[1, BP], 3, 3, [4, RLE], 2, [1, BP], 0, 1, [5, RLE], 1, [1, BP], 3」,且輸入字典如表1所示。在二個實例中,列表示當前編碼緩衝器620及先前編碼緩衝器625中的內容以及當時已被輸出至輸出串流的內容的「快照」。
在第一實例中,圖1所示主機電腦105已請求了關於美利堅合眾國公民的資料。在表1中可看出,「United States of America(美利堅合眾國)」的索引是「3」。因此,輸出字典可如表2所示。
表4
列 | 當前編碼緩衝器 | 先前編碼緩衝器 | 輸出串流 |
1 | [1, BP], 3, 3 | ||
2 | [4, RLE], 2 | [1, BP], 1, 1 | |
3 | [1, BP], 0, 1 | [4, RLE], 0 | [1, BP], 1, 1 |
4 | [5, RLE], 1 | [6, RLE], 0 | [1, BP], 1, 1 |
5 | [1, BP], 3 | [11, RLE], 0 | [1, BP], 1, 1 |
6 | [1, BP], 1, 1, [11, RLE], 0, [1, BP], 1 |
如表4的第1列中所示,由規則評估器635處理的第一組塊是「[1, BP], 3, 3」。由於此組塊可包括感興趣的資料(值「3」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「3」替換成值「1」。然後,此已轉換編碼的組塊可被移動至先前編碼緩衝器625(如表4的第2列中所示)。
在表4的第2列中,由規則評估器635處理的第二組塊是「[4, RLE], 2」。由於此組塊可不包括感興趣的資料(值「2」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「2」替換成值「0」(指示此資料是「不理會」資料)。由於此組塊可包含「不理會」資料,但先前編碼緩衝器625可包含感興趣的資料,因此先前編碼緩衝器625中的資料可被輸出至輸出串流(如表4的第3列中所示),且當前已轉換編碼的組塊可被移動至先前編碼緩衝器625(如表4的第3列中所示)。
在表4的第3列中,由規則評估器635處理的第三組塊是「[1, BP], 0, 1」。由於此組塊可不包括感興趣的資料(值「0」及「1」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「0」及「1」替換成值「0」(指示此資料是「不理會」資料)。
由於此組塊可包含「不理會」資料,且先前編碼緩衝器625可能已包含「不理會」資料,因此此二個組塊可被組合。由於此組塊使用位元打包,但先前編碼緩衝器625中的組塊使用RLE,因此可將二種編碼方案中的一種替換成另一種編碼方案。在此實例中,可使用RLE對經位元打包編碼的資料進行轉換編碼。(若二或更多個值是使用位元打包儲存於單個值中,則可複製整個群組,此意味著已複製值的數目可為已打包值的數目的倍數。另一方面,RLE複製單個值。)因此,先前編碼緩衝器625現在可儲存「[6, RLE], 0」(如表4的第4列中所示),此將第二組塊中的四個「不理會」值與第三組塊中的二個「不理會」值組合。
在表4的第4列中,由規則評估器635處理的第四組塊是「[5, RLE], 1」。由於此組塊可不包括感興趣的資料(值「1」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「1」替換成值「0」(指示此資料是「不理會」資料)。
由於此組塊可包含「不理會」資料,且先前編碼緩衝器625可能已包含「不理會」資料,因此此二個組塊可被組合。此二個組塊均使用RLE作為編碼方案來對相同的「不理會」值進行編碼,因此規則評估器635可藉由增加先前編碼緩衝器625中的組塊中的複製值來組合所述二個組塊。因此,先前編碼緩衝器625現在可儲存「[11, RLE], 0」(如表4的第5列中所示),其將第二組塊中的四個「不理會」值、第三組塊中的二個「不理會」值以及第四組塊中的五個「不理會」值組合。
在表4的第5列中,由規則評估器635處理的第二組塊是「[1, BP], 3」。由於此組塊可包括感興趣的資料(值「3」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「3」替換成值「1」。注意,由於此已轉換編碼的組塊可包含感興趣的資料,而先前編碼緩衝器625可包含「不理會」資料,因此可不將此已轉換編碼的組塊與先前編碼緩衝器625中的組塊組合。
此時,通常先前編碼緩衝器625中的已轉換編碼的資料將被輸出至輸出串流,且當前已轉換編碼的組塊將被移動至先前編碼緩衝器625。然而,由於當前已轉換編碼的組塊是輸入串流中的最後一個組塊,因此可輸出二個已轉換編碼的組塊(當然,先前編碼緩衝器625中的組塊首先輸出)。表4的第6列示出最終輸出。
在第二實例中,圖1所示主機電腦105已請求關於韓國公民的資料。在表1中可看出,「Korea(韓國)」的索引是「2」。因此,輸出字典如表5所示。
表5
表6
ID | Country |
0 | Don’t Care |
1 | Korea |
列 | 當前編碼緩衝器 | 先前編碼緩衝器 | 輸出串流 |
1 | [1, BP], 3, 3 | ||
2 | [4, RLE], 2 | [1, BP], 0, 0 | |
3 | [1, BP], 0, 1 | [4, RLE], 1 | [1, BP], 0, 0 |
4 | [5, RLE], 1 | [1, BP], 0, 0 | [1, BP], 0, 0, [4, RLE], 1 |
5 | [1, BP], 3 | [7, RLE], 0 | [1, BP], 0, 0, [4, RLE], 1 |
6 | [1, BP], 0, 0, [4, RLE], 1, [8, RLE], 0 |
如表6的第1列中所示,由規則評估器635處理的第一組塊是「[1, BP], 3, 3」。由於此組塊可包括不感興趣的資料(值「3」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「3」替換成值「0」(指示此資料是「不理會」資料)。然後,此已轉換編碼的組塊可被移動至先前編碼緩衝器625(如表6的第2列中所示)。
在表6的第2列中,由規則評估器635處理的第二組塊是「[4, RLE], 2」。由於此組塊可包括感興趣的資料(值「2」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「2」替換成值「1」。由於此組塊可包含感興趣的資料,但先前編碼緩衝器625可包含不感興趣的資料,因此先前編碼緩衝器625中的資料可被輸出至輸出串流(如表6的第3列中所示),且當前已轉換編碼的組塊可被移動至先前編碼緩衝器625(如表6的第3列中所示)。
在表6的第3列中,由規則評估器635處理的第三組塊是「[1, BP], 0, 1」。由於此組塊可不包括感興趣的資料(值「0」及「1」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「0」及「1」替換成值「0」(指示此資料是「不理會」資料)。由於此組塊可包含不感興趣的資料,但先前編碼緩衝器625可包含感興趣的資料,因此先前編碼緩衝器625中的資料可被輸出至輸出串流(如表6的第4列中所示),且當前已轉換編碼的組塊可被移動至先前編碼緩衝器625(如表6的第4列中所示)。
在表6的第4列中,由規則評估器635處理的第四組塊是「[5, RLE], 1」。由於此組塊可不包括感興趣的資料(值「1」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「1」替換成值「0」(指示此資料是「不理會」資料)。
由於此組塊可包含「不理會」資料,且先前編碼緩衝器625可包含「不理會」資料,因此此二個組塊可被組合。由於此組塊使用RLE,但先前編碼緩衝器625中的組塊使用位元打包,可將所述二種編碼方案中的一種替換成另一種編碼方案。在此實例中,可使用RLE對經位元打包編碼的資料進行轉換編碼。(再次,選擇RLE可能是由於可複製單個值,而非值群組。)因此,先前編碼緩衝器625現在儲存「[7, RLE], 0」(如表4的第5列中所示),其將第三組塊中的二個「不理會」值與第四組塊中的五個「不理會」值組合。
在表6的第5列中,由規則評估器635處理的第二組塊是「[1, BP], 3」。由於此組塊可不包括感興趣的資料(值「3」),因此規則評估器635可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來將值「3」替換成值「0」(「不理會」值)。
由於此組塊可包含「不理會」資料,且先前編碼緩衝器625可包含「不理會」資料,因此此二個組塊可被組合。由於此組塊使用位元打包,但先前編碼緩衝器625中的組塊使用RLE,因此可將所述二種編碼方案中的一種替換成另一種編碼方案。在此實例中,可使用RLE對經位元打包編碼的資料進行轉換編碼。因此,先前編碼緩衝器625現在儲存「[8, RLE], 0」,其將第三組塊中的2個「不理會」值、第四組塊中的五個「不理會」值及第五組塊中的一個「不理會」值組合。
最後,由於第五組塊是輸入串流的最後一個組塊,因此規則評估器635可輸出先前編碼緩衝器625中的已轉換編碼的資料。表6的第6列示出最終輸出。
以上二個實例均未示出其中連續組塊包括感興趣的資料的情況。本發明概念的實施例可以不同的方式來處置此類情況。在本發明概念的一個實施例中,當當前編碼緩衝器620包含感興趣的資料時,可將先前編碼緩衝器625中的任何組塊輸出至輸出串流(亦即,若當前編碼緩衝器620包含感興趣的資料,則不嘗試將當前編碼緩衝器620中的資料與先前編碼緩衝器625中的資料組合)。在本發明概念的另一實施例中,當前編碼緩衝器620中的組塊與先前編碼緩衝器625中的組塊可被組合。然而,在本發明概念的此類實施例中,此種組合是否可行可取決於感興趣的值是否相同。例如,若一個組塊包括關於中國公民的資料,而另一組塊包括關於韓國公民的資料,則視本發明概念的實施例而定,可組合或可不組合此類組塊。另一方面,若二個組塊均包括關於韓國公民的資料,則將此二個組塊組合可為可行的。
規則評估器635可使用轉換編碼規則630來判斷什麼資料是被感興趣的及什麼資料是不被感興趣的、什麼資料可被輸出及什麼資料可儲存於先前編碼緩衝器625中以及組塊是否可自一種編碼方案被轉換編碼成另一種編碼方案。確切的規則可依據可由資料使用的編碼方案而變化。
如上所述,規則評估器635亦可包括索引映射器615。在其中規則評估器635包括索引映射器615的本發明概念實施例中,規則評估器635可在應用轉換編碼規則630之前對當前編碼緩衝器620的內容應用索引映射器615。
表7示出當所使用的編碼方案可為RLE或位元打包時可使用的一些規則。在其中可使用其他編碼方案的本發明概念實施例中,規則可相應地變化:所有此類變化均被認為是本發明概念的實施例。此外,本發明概念的實施例可包括管理在多於二種不同類型的編碼方案之間對資料進行轉換編碼的規則。例如,混合編碼方案可使用三種不同的編碼方案:當圖6所示當前編碼緩衝器620及圖6所示先前編碼緩衝器625包含使用任何一對不同的編碼方案被編碼的資料時,圖6所示轉換編碼規則630則可指定如何對資料進行轉換編碼。
在表7中,P表示圖1所示主機電腦105可感興趣的資料,DC表示主機電腦105可不感興趣的資料。(以下參照圖11進一步論述可如何將資料識別為被感興趣或不被感興趣。)在使用變數(例如x
、y
或z
)的情況下,該些變數可表示圖1所示主機電腦105感興趣或不感興趣的值的數目的計數。例如,表達式「[g
, BP] P(x
), DC(y
), P(z
)」(如在規則7及9中所使用)可指示資料是使用位元打包被編碼:群組包括在群組開始處的x
個感興趣的值、在群組中間的y
個不感興趣的值以及在群組結束處的z
個感興趣的值。可預期,x
、y
、z
、g
及G滿足以下約束條件:g
* G =x
+y
+z
,1 ≤g
≤ 63,x
mod G = 0,y
mod G = 0,z
mod G = 0,y
≠ 0,且y
≥ 16除以每一已打包值的位元數目。最後,PEB(在輸出行中)可指示,當規則被選擇來應用時儲存於先前編碼緩衝器625中的任何內容可被輸出至輸出串流。表7亦考量其中任何資料已被索引映射器615映射且因此包含與圖8所示輸出字典810對應的值的情況。
表7
規則 | 當前編碼緩衝器 | 先前編碼緩衝器 | 新的先前編碼緩衝器 | 新的先前當前緩衝器 | 輸出 |
1 | [r , RLE] P | 任何內容 | [r , RLE], P | 下一個組塊 | PEB |
2 | [r , RLE] DC | [r 1 , RLE] DC | [r 1 +r , RLE] DC | 下一個組塊 | |
3 | [r , RLE] DC | 任何別的內容 | [r , RLE] DC | 下一個組塊 | PEB |
4 | [g , BP], P | 任何內容 | [g , BP], P | 下一個組塊 | PEB |
5 | [g , BP] DC(y ) | [r 1 , RLE] DC | [r 1 +y , RLE] DC | 下一個組塊 | |
6 | [g , BP] DC(y ), P(z ) | [r 1 , RLE] DC | [r 1 +y , RLE] DC | [z / 8, BP] PO(z ) | |
7 | [g , BP] P(x ), DC(y ), P(z ) | [r 1 , RLE] DC | [x / 8, BP] P(x ) | [(y +z )/8, BP] DC(y ), P(z ) | PEB |
8 | [g , BP] DC(y ), P(z ) | 任何別的內容 | [y , RLE] DC | [z / 8, BP] P(z ) | PEB |
9 | [g , BP] P(x ), DC(y ), P(z ) | 任何別的內容 | [x / 8, BP] P(x ) | [(y +z )/8, BP] DC(y ), P(z ) | PEB |
以上論述闡述了一般情況下可如何對資料執行轉換編碼。然而,當資料是以行式格式儲存時,可利用行式格式來有利於轉換編碼。在可闡述此種作用之前,理解行式格式是有用的。為便於說明,參照SSD來闡述行式格式,然而本發明概念的實施例可包括可利用行式格式的其他儲存裝置。
圖9示出以行式格式儲存的示例性檔案。在圖9中,示出了檔案。所述檔案可包括檔案元資料905以及行組塊910-1、910-2及910-3。雖然圖9示出三個行組塊910-1至910-3,然而本發明概念的實施例可不受限制地包括任何數目(零個或多個)的組塊。
檔案元資料905可包括與檔案相關的元資料。雖然亦可儲存其他元資料,然而圖9將檔案元資料905示為包括檔案至區塊映射915及字典頁面920。字典頁面920可為用於對檔案資料內的值進行編碼的字典,例如以上表1中所示的字典。字典頁面920亦可儲存可用於對檔案內的不同資料進行編碼的多個字典:例如,一個字典可儲存國家名稱,而另一字典可儲存姓氏。
檔案至區塊映射915可識別儲存單獨行組塊910-1、910-2及910-3的區塊以及其相對次序。檔案至區塊映射915亦可指定每一行組塊910-1、910-2及910-3內的資料頁面的次序,或者可在行組塊910-1、910-2及910-3內指定頁面次序。檔案至區塊映射915可類似於圖5所示檔案至區塊映射530,只不過其中檔案至區塊映射530可提供關於哪些區塊用於儲存圖1所示儲存裝置120上所儲存的每一檔案的資訊,而檔案至區塊映射915可提供關於哪些區塊用於儲存圖9所示檔案的資訊。(當然,二個檔案至區塊映射可一起使用:圖5所示檔案至區塊映射530可用於定位為每一檔案儲存檔案元資料905的區塊,然後檔案元資料905中的檔案至區塊映射915可用於定位為檔案儲存行組塊的行組塊。)
一般而言,單個行組塊可橫跨多個區塊,且單個區塊可儲存多個行組塊。只要存在某種方式來識別資料儲存於何處以及所述資料表示什麼(例如,什麼檔案包含所述資料),在更一般的資料儲存解決方案中就幾乎不存在困難。然而為便於進行此論述,考量其中行組塊可裝配於單個區塊中且各區塊不共享行組塊的情況。因此,行組塊910-1、910-2及910-3中的每一者可儲存於單獨的區塊中。
在行組塊910-1(行組塊910-2及910-3是類似的)內,可具有字典頁面925及資料頁面930-1、930-2及930-3。儘管圖9示出三個資料頁面,然而本發明概念的實施例可在行組塊中包括任何數目(零個或多個)的資料頁面。資料頁面可儲存檔案的實際資料,所述實際資料被劃分成可裝配至單獨頁面中的單位。
字典頁面925可儲存用於行組塊910-1內資料的字典。與字典頁面920一樣,字典頁面925可儲存可用於對檔案內的不同資料進行編碼的多個字典。
可能會出現關於為什麼圖9示出字典頁面920及字典頁面925的問題。原因是字典頁面920及925可在行式格式的不同實施方案中使用。例如,一種行式儲存格式可對整個檔案使用單個字典,所述字典可儲存於字典頁面920中。然而另一種行式格式可在每一行組塊910-1、910-2及910-3中使用單獨的字典頁面925。使用字典頁面925的優點在於,若特定行組塊不使用字典或者在所述特定行組塊內的資料中不使用某些值,則可自字典頁面925省略此種資訊,進而減小字典頁面925的大小(或者甚至完全消除字典頁面925)。然而另一方面,不同行組塊中的多個字典頁面925可能導致資料複製:可在多個行組塊中使用相同的字典條目。此即為什麼字典頁面920及925是以虛線示出:視所使用的行式儲存格式而定,可省略任一者。(事實上,甚至可能發生以下情形:檔案根本不使用字典,在此種情形中,字典頁面920及925可均被省略。)
現在已闡述了行式格式,可闡述為在使用行式格式的儲存裝置中使用圖4所示轉換編碼器420而進行的調適。圖10示出被配置成實作轉換編碼的圖1所示儲存裝置120,其中資料是以行式格式儲存。在圖10中,儲存裝置120可包括功能類似於以上參照圖5所述者的主機介面層505、儲存裝置控制器510及儲存器515(再次,儲存裝置120可為SSD、硬碟驅動機或可使用行式格式的任何其他儲存裝置)。
儲存裝置120亦可包括儲存器內計算控制器1005、行組塊處理器1010及儲存器內計算315。儲存器內計算控制器1005可管理將什麼資訊發送至儲存器內計算315及行組塊處理器1010。例如,當圖1所示主機電腦105請求儲存裝置120執行某一加速功能(例如對特定國家的公民的數目進行計數)時,儲存器內計算控制器1005可向行組塊處理器1010提供述詞(識別感興趣的國家)。儲存器內計算控制器1005亦可自儲存器515存取資料(具體而言,行組塊),並將所述資料提供至行組塊處理器1010。儲存器內計算控制器1005亦可確定在資料中所使用的編碼方案(假設對行組塊或整個檔案使用單個編碼方案,而非混合編碼方案),並將編碼類型提供至行組塊處理器1010。最後,根據來自圖1所示主機電腦105的請求,儲存器內計算控制器1005可自行組塊處理器返回的已轉換編碼的資料,且可將所述已轉換編碼的資料傳回至圖1所示主機電腦105(經由主機介面層505)或者儲存器內計算315。以下參照圖11論述行組塊處理器1010的結構及操作。
可使用經適當程式化的通用處理器、FPGA、ASIC、GPU或GPGPU以及其他可能方案來實作儲存器內計算控制器1005及行組塊處理器1010。儲存器內計算控制器1005及行組塊處理器1010可使用相同的硬體或不同的硬體來實作(例如,儲存器內計算控制器1005可被實作為ASIC,而行組塊處理器1010可被實作為FPGA),且其可被實作為單個單元或單獨的組件。
圖11示出被配置成實作轉換編碼的圖10所示行組塊處理器1010,其中資料是以行式格式儲存。在圖11中,行組塊處理器1010可接收輸入串流、編碼類型及述詞作為輸入,且可產生輸出串流作為輸出。輸入串流可儲存於輸入緩衝器1105中。輸入串流可為行組塊中的單個資料頁面,或者其可為行組塊中的所有資料。然後,來自輸入緩衝器1105的資料可作為輸入串流被提供至轉換編碼器420(如上參照圖6所述):轉換編碼器420亦可自圖10所示儲存器內計算控制器1005接收編碼類型,如參照圖10所論述。注意,由於轉換編碼器420可包括圖6所示循環緩衝器605,因此可省略輸入緩衝器1105:資料可儲存於圖6所示循環緩衝器605中,圖6所示串流分離器610可對所述資料進行操作。然而,在本發明概念的一些實施例中,圖6所示循環緩衝器605可能並不大至足以儲存整個資料頁面或行組塊(或者輸入串流提供資料的速度可能較自圖6所示循環緩衝器605移除資料的速度更快),在此種情形中,輸入緩衝器1105可為可能未立即裝配至圖6所示循環緩衝器605中的資料充當暫時儲存庫。
轉換編碼器420的輸出—以上參照圖6所述的輸出串流—可儲存於輸出緩衝器1110中。再次,雖然資料可在由轉換編碼器420產生時被直接發送至其目的地,然而以特定單位(例如完整的資料頁面或行組塊)發送資料可為有用的。在此類情況中,輸出緩衝器1110可儲存輸出串流,直至產生適當的資料單位為止。此時,根據所請求的轉換編碼操作,行組塊處理器1010可將輸出串流發送至圖10所示儲存器內計算控制器1005或圖1所示主機電腦105。
索引映射器615(在圖11中被示為在轉換編碼器420之外,但索引映射器615可如圖6所示為轉換編碼器420的一部分)可自述詞評估器1115及「不理會」評估器1120接收資訊。述詞評估器1115可自圖10所示儲存器內計算控制器1005接收述詞,並使用所述述詞來判斷什麼資料被感興趣。述詞評估器1115可使用比較運算子來識別圖1所示主機電腦105對圖8所示輸入字典805(其可為圖9所示字典頁面920及925中的任一者)中的哪些值感興趣。「不理會」評估器1120可類似地(但以鏡像形式)運作,以識別什麼資料不被感興趣。注意,由於述詞評估器1115與「不理會」評估器1120在操作上是互補的,因此可使用此二個評估器中的一者(其中不滿足一個評估器的準則的任何資料因此適合另一評估器的準則):因此,可省略述詞評估器1115及「不理會」評估器1120中的一者。此資訊可由述詞評估器1115及「不理會」評估器1120提供至索引映射器615,進而使得索引映射器615能夠建立自圖8所示輸入字典805至圖8所示輸出字典810的映射。
作為實例,再次考量來自圖6所示主機電腦105的欲對資料集中包括美利堅合眾國公民的條目的數目進行計數的查詢。當此查詢到達時,可提取述詞(例如,「citizenship(公民身份)= United States of America(美利堅合眾國)」:述詞的確切格式可取決於資料集的格式及用於提交查詢的應用)。可對圖8所示輸入字典805(例如表1中所示的字典)進行查核,以將「United States of America(美利堅合眾國)」替換成值「3」。因此,提供至索引映射器615的述詞可指定「citizenship(公民身份)= 3」,之後索引映射器615可生成圖8所示輸出字典810(例如表2中所示的字典)及表3中所示的映射。
注意,述詞評估器1115的結果亦可被提供至轉換編碼器420,以用於建構圖6所示轉換編碼規則630。由於圖6所示轉換編碼規則630可取決於知曉圖1所示主機電腦105對什麼資料感興趣,因此可使用述詞評估器1115的結果來調適圖6所示轉換編碼規則630。例如,再次考量表7中所示的規則。述詞評估器1115的結果(或者甚至自圖8所示輸入字典805至圖8所示輸出字典810的映射(例如表3中所示的映射))可用於在各種規則中為P及DC建立適當的值。
亦注意,在圖11中,述詞適用於作為輸入串流輸入至轉換編碼器420的任何資料。雖然斷定述詞將被應用於圖1所示主機電腦105向其提交查詢的整個資料集是合理的,然而轉換編碼器420將輸入串流視為完整的,即使輸入串流可能表示資料集的一部分。例如,行組塊處理器1010可使用轉換編碼器420將圖9所示每一資料頁面930-1、930-2及930-3作為其自己的「輸入串流」來處理。由於轉換編碼器420不知道輸入串流表示什麼,因此此過程沒有問題。
圖12A至圖12C示出根據本發明概念實施例,圖4及圖6所示轉換編碼器420對資料進行轉換編碼的示例性程序的流程圖。在圖12A中,在方塊1205處,圖6所示轉換編碼器420可進行檢查以查看是否仍存在欲自輸入串流接收的任何資料。一般而言,此輸入串流可來自任何源,但如以上參照圖9至圖11所論述,當資料是以行式格式儲存時,此輸入串流可為行組塊中的資料頁面。若不存在欲自輸入串流接收的剩餘資料,則在方塊1210處,圖6所示轉換編碼器420可進行檢查以查看在圖6所示先前編碼緩衝器625或圖6所示當前編碼緩衝器620中是否剩餘任何已轉換編碼的資料。若在圖6所示先前編碼緩衝器625或圖6所示當前編碼緩衝器620中剩餘任何已轉換編碼的資料,則將圖6所示先前編碼緩衝器625中的已轉換編碼的資料輸出至輸出串流,隨後將圖6所示當前編碼緩衝器625中的已轉換編碼的資料輸出至輸出串流。在大多數情況下,圖6所示當前編碼緩衝器620中應不存在任何資料,乃因規則評估器635可對圖6所示當前編碼緩衝器620中的資料進行操作。甚至在其中由於應用圖6所示轉換編碼規則630(例如,如表7的規則6至9中所示)而可在圖6所示當前編碼緩衝器620中留下資料的情況下,圖6所示規則評估器635亦將然後先對所述資料進行操作,之後圖6所示轉換編碼器420才將尋找來自輸入串流(經由圖6所示循環緩衝器605及圖6所示串流分離器610)的新資料:圖6所示轉換編碼器420可在等待圖6所示當前編碼緩衝器620被清空之後才試圖處理來自輸入串流的下一個資料組塊。然而,倘若在圖6所示當前編碼緩衝器620中仍留有已轉換編碼的資料,則可將所述已轉換編碼的資料輸出至輸出串流。一旦在方塊1215處所有資料均被輸出至輸出串流,處理便可結束(直至預期圖6所示轉換編碼器420處理新的輸入串流)。
假設輸入串流中仍存在欲處理的資料,則在方塊1220處,圖6所示循環緩衝器605可自輸入串流接收下一個已編碼資料,此後,圖6所示串流分離器610可識別已編碼資料中的第一組塊並將所述組塊轉發至圖6所示索引映射器615。(在其中圖6所示索引映射器615實際上是圖6所示規則評估器635的一部分的本發明概念實施例中,圖6所示串流分離器610可將已編碼資料組塊放置於圖6所示當前編碼緩衝器620中。)在方塊1225處,圖6所示索引映射器615(或圖6所示規則評估器635)可判斷資料組塊是否被感興趣:更具體而言,資料組塊是否包括由圖1所示主機電腦105請求的資料(例如,依據述詞)。
若已編碼資料組塊包括圖1所示主機電腦105感興趣的資料,則在方塊1230(圖12B)處,圖6所示索引映射器615(或圖6所示規則評估器635)可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射來對組塊中的任何資料進行重新編碼。在方塊1235處,圖6所示規則評估器635可進行檢查以查看圖1所示主機電腦105是否對圖6所示先前編碼緩衝器625中的任何已轉換編碼的資料感興趣。若否(且回想起如在圖12A所示方塊1225處所確定,圖1所示主機電腦105對當前組塊感興趣),則在方塊1240處,圖6所示轉換編碼器420可將圖6所示先前編碼緩衝器625中的已轉換編碼的資料輸出至輸出串流,且在方塊1245處,圖6所示轉換編碼器420可將當前已轉換編碼的組塊儲存於圖6所示先前編碼緩衝器625中,之後處理可返回至圖12A所示方塊1205。
另一方面,若如在方塊1235處所確定,圖6所示先前編碼緩衝器625亦儲存圖1所示主機電腦105感興趣的資料,則在方塊1250處,圖6所示規則評估器635可判斷當前組塊與圖6所示先前編碼緩衝器625中的已轉換編碼的組塊是否使用相同的編碼方案。若否,則在方塊1255處,圖6所示規則評估器635可改變由組塊中的一者(圖6所示當前編碼緩衝器620中的組塊或者圖6所示先前編碼緩衝器625中的組塊)使用的編碼方案。(在其中使用多於二種編碼方案的情況下,圖6所示規則評估器635可改變由圖6所示當前編碼緩衝器620中的組塊及圖6所示先前編碼緩衝器625中的組塊使用的編碼方案。)然後,在知曉圖6所示當前編碼緩衝器620中的組塊與圖6所示先前編碼緩衝器625中的組塊使用相同的編碼方案的情況下,在方塊1260處,圖6所示規則評估器635可將二個組塊組合成單個組塊,所述單個組塊可儲存於圖6所示先前編碼緩衝器625中,之後處理可返回至圖12A所示方塊1205。
注意,圖12B示出當前組塊可被轉換編碼二次:一次在方塊1230中(當值被更新成對應於圖8所示輸出字典810時)且一次在方塊1255中(若當前組塊的編碼方案被改變,當自一種編碼方案改變成另一種編碼方案時)。雖然可分開地執行此二個操作,但亦可將此二個操作組合:亦即,同時改變編碼方案及更新值。本發明概念的實施例包括分開地及作為單個步驟來執行此二個操作。
回想起,圖12B闡述了當圖1所示主機電腦105對當前組塊感興趣(如在圖12A所示方塊1225處所確定)時執行的操作。倘若圖1所示主機電腦105對當前組塊不感興趣(再次,如在圖12A所示方塊1225處所確定),則在方塊1265(圖12C)處,圖6所示索引映射器615(或圖6所示規則評估器635)可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射對組塊中的任何資料進行重新編碼(具體而言,重新編碼成「不理會」值)。在方塊1270處,圖6所示規則評估器635可進行檢查以查看圖1所示主機電腦105是否對圖6所示先前編碼緩衝器625中的任何已轉換編碼的資料感興趣。若是(且回想起如在圖12A所示方塊1225處所確定,圖1所示主機電腦105對當前組塊不感興趣),則在方塊1275處,圖6所示轉換編碼器420可將圖6所示先前編碼緩衝器625中的已轉換編碼的資料輸出至輸出串流,且在方塊1280處,圖6所示轉換編碼器420可將當前已轉換編碼的組塊儲存於圖6所示先前編碼緩衝器625中,之後處理可返回至圖12A所示方塊1205。
另一方面,若如在方塊1270處所確定,圖6所示先前編碼緩衝器625亦儲存圖1所示主機電腦105不感興趣的資料,則在方塊1285處,圖6所示規則評估器635可判斷當前組塊與圖6所示先前編碼緩衝器625中的已轉換編碼的組塊是否使用相同的編碼方案。若否,則在方塊1290處,圖6所示規則評估器635可改變由組塊中的一者(圖6所示當前編碼緩衝器620中的方塊或者圖6所示先前編碼緩衝器625中的方塊)使用的編碼方案。(在其中使用多於二種編碼方案的情況下,圖6所示規則評估器635可改變由圖6所示當前編碼緩衝器620中的組塊及圖6所示先前編碼緩衝器625中的組塊使用的編碼方案。)然後,在知曉圖6所示當前編碼緩衝器620中的組塊及圖6所示先前編碼緩衝器625中的組塊使用相同的編碼方案的情況下,在方塊1295處,圖6所示規則評估器635可將二個組塊組合成單個組塊,所述單個組塊可儲存於圖6所示先前編碼緩衝器625中,之後處理可返回至圖12A所示方塊1205。
注意,圖12C示出當前組塊可被轉換編碼二次:一次在方塊1265中(當值被更新成對應於圖8所示輸出字典810時)且一次在方塊1290中(若當前組塊的編碼方案被改變,當自一種編碼方案改變成另一種編碼方案時)。雖然可分開地執行此二個操作,但亦可將此二個操作組合:亦即,同時改變編碼方案及更新值。本發明概念的實施例包括分開地及作為單個步驟來執行此二個操作。
在圖12A至圖12C中,存在隱含的假設:在圖6所示先前編碼緩衝器625中存在一些資料。例如,方塊1235及1270闡述了其中在圖6所示先前編碼緩衝器625中存在一些資料的情況。此通常是合理的假設,乃因已轉換編碼的資料可在圖6所示先前編碼緩衝器625中緩衝,以支援組合可被組合的資料組塊(若資料已被輸出至輸出串流,則嘗試組合組塊將為時已晚)。然而,可能存在其中圖6所示先前編碼緩衝器625中未儲存資料的情況。作為一個實例,當輸入串流的第一個組塊被處理時,在先前編碼緩衝器625中不存在資料(乃因在所述輸入串流中先前尚未處理過任何資料)。作為第二實例,可能存在不支援資料組塊組合的編碼方案,在此種情形中,將先前組塊儲存於圖6所示先前編碼緩衝器625中幾乎不存在價值。若在圖6所示先前編碼緩衝器625中不存在資料,則沒必要將當前組塊與圖6所示先前編碼緩衝器625中的(不存在的)組塊進行比較或者自圖6所示先前編碼緩衝器625輸出(不存在的)組塊。簡單的解決方案是,若在圖6所示先前編碼緩衝器625中不存在資料,則可不進行任何將取決於在先前編碼緩衝器625中存在資料的操作。因此,例如,在圖12B中,若在先前編碼緩衝器625中不存在資料,則處理可直接自方塊1230跳至方塊1245(以在圖6所示先前編碼緩衝器625中緩衝當前已轉換編碼的組塊),且在圖12C中,處理可直接自方塊1265跳至方塊1280(以在圖6所示先前編碼緩衝器625中緩衝當前已轉換編碼的組塊)。
仔細查核圖12B及圖12C將會發現二者之間存在相對很小的差異。值得注意的一些差異在於方塊1230及1265、以及自方塊1235及1270離開的不同分支。事實上,甚至該些差異亦是相對次要的:方塊1230及1265均是關於基於圖8所示輸出字典810進行的重新編碼(方塊1265只是具體列出了「不理會」值的使用)。並且,雖然離開方塊1235及1270的分支被不同地標記,然而原因是由於方塊1235及1270均是關於判斷當前組塊是否可與先前組塊組合。因此,圖12B至圖12C在理論上可被組合,但代價是關於操作序列的清晰性會有某種程度的損失。
圖13示出圖6所示串流分離器610將輸入已編碼資料劃分成組塊的示例性程序的流程圖。在圖13中,在方塊1305處,圖6所示串流分離器610可接收輸入已編碼資料(其可源自圖1所示儲存裝置120內的圖3所示儲存器305),所述輸入已編碼資料可在緩衝器(例如圖11所示輸入緩衝器1105或圖6所示循環緩衝器605)中緩衝。在方塊1310處,圖6所示串流分離器610可將輸入已編碼資料劃分成組塊。在方塊1315處,圖6所示串流分離器610可將組塊發送至圖6所示轉換編碼器420(或者發送至圖6所示索引映射器615或圖6所示當前編碼緩衝器620)。
圖14A至圖14B示出根據本發明概念實施例,圖10所示行組塊處理器1010及/或圖4及圖6所示轉換編碼器420對以行式格式儲存的資料進行轉換編碼的示例性程序的流程圖。在至少一個實施例中,圖14A至圖14B亦可被視為擴展了圖6所示串流分離器610可如何接收輸入已編碼資料,如圖13所示方塊1305中所述。
在圖14A中,在方塊1405處,圖10所示行組塊處理器1010可存取檔案的圖9所示檔案至區塊映射915(或者作為另一選擇或附加地圖5所示檔案至區塊映射530)。在方塊1410處,圖10所示行組塊處理器1010可使用圖9所示檔案至區塊映射915來定位圖9所示檔案元資料905且因此圖9所示輸入字典920。若圖9所示每一行組塊910-1、910-2及910-3包括其自己的圖9所示字典頁面925,則可自圖9所示檔案元資料905省略圖9所示字典頁面920,在此種情形中,可省略方塊1410,如虛線1415所示。然後,使用圖9所示檔案至區塊映射915,在方塊1420處,圖10所示行組塊處理器1010可識別檔案的行組塊(其可為儲存於圖1所示儲存裝置120上的資料區塊)。
在方塊1425(圖14B)處,圖10所示行組塊處理器1010可判斷是否存在更多的行組塊(區塊)欲存取。若否,則處理完成。否則,在方塊1430處,圖10所示行組塊處理器1010可自圖9所示行組塊910-1、910-2或910-3存取圖9所示字典頁面925。若圖9所示檔案元資料905儲存圖9所示字典頁面920,則圖9所示行組塊910-1、910-2及910-3可省略圖9所示字典頁面925,在此種情形中,可省略方塊1430,如虛線1435所示。在方塊1440處,圖10所示行組塊處理器1010可自圖9所示行組塊910-1、910-2及910-3存取圖9所示資料頁面930-1、930-2及930-3。在方塊1445處,圖10所示行組塊處理器1010可將圖8所示輸入字典805及行組塊的圖9所示資料頁面930-1、930-2及930-3(按次序)轉發至圖6所示轉換編碼器420、圖6所示串流分離器610或圖6所示索引映射器615。
圖15示出根據本發明概念實施例,圖6所示索引映射器615將圖8所示輸入字典805映射至圖8所示輸出字典810的示例性程序的流程圖。在圖15中,在方塊1505處,圖6所示索引映射器615可接收圖8所示輸入字典805(例如,自圖10所示行組塊處理器1010)。在方塊1510處,圖6所示索引映射器615可判斷圖8所示輸入字典805中的什麼資料被感興趣。圖6所示索引映射器615使用例如自圖1所示主機電腦105、可能經由圖10所示儲存器內計算控制器1005接收的述詞來作出此判斷。在方塊1515處,圖6所示索引映射器615可生成圖8所示輸出字典810。輸出字典810可包括圖1所示主機電腦105感興趣的所有條目,但可將圖1所示主機電腦105不感興趣的所有條目合併成單個「不理會」值。在方塊1520處,圖6所示索引映射器615可將來自圖8所示輸入字典805的值映射至圖8所示輸出字典810。最後,在方塊1525處,圖6所示索引映射器615可輸出圖8所示字典810。
圖16A至圖16B示出根據本發明概念實施例,圖10所示儲存器內計算控制器1005管理自圖1所示主機電腦105接收的述詞並潛在地對已轉換編碼的資料執行加速功能的示例性程序的流程圖。在圖16A中,在方塊1605處,圖10所示儲存器內計算控制器1005可自圖1所示主機電腦105接收述詞。在方塊1610處,圖10所示儲存器內計算控制器1005可存取由查詢涵蓋的已編碼資料的圖8所示輸入字典805。在方塊1615處,圖10所示儲存器內計算控制器1005可識別圖8所示輸入字典805中由述詞涵蓋的條目(即,圖8所示輸入字典805中圖1所示主機電腦105感興趣的條目)。在方塊1620處,圖10所示儲存器內計算控制器1005可創建包含由述詞涵蓋的條目的圖8所示輸出字典810。在方塊1625處,圖10所示儲存器內計算控制器1005可將圖8所示輸入字典805中由述詞涵蓋的條目映射至圖8所示輸出字典810中的條目。
在方塊1630處,圖10所示儲存器內計算控制器1005可識別圖8所示輸入字典805中未由述詞涵蓋的條目(即,圖8所示輸入字典805中圖1所示主機電腦105不感興趣的條目)。在方塊1635處,圖10所示儲存器內計算控制器1005可向圖8所示輸出字典810添加「不理會」條目。在方塊1640(圖16B)處,圖10所示儲存器內計算控制器1005可將輸入字典中未由述詞涵蓋的條目映射至圖8所示輸出字典810中的「不理會」條目。
在方塊1645處,圖6所示規則評估器635(在圖6所示轉換編碼器420內)可針對來自圖1所示主機電腦105的查詢使用述詞來調適圖6所示轉換編碼規則630。在方塊1650處,圖6所示索引映射器615及圖6所示規則評估器635(均潛在地在圖6所示轉換編碼器420內)可使用自圖8所示輸入字典805至圖8所示輸出字典810的映射及圖6所示轉換編碼規則630來將已編碼資料自輸入串流轉換編碼成輸出串流(如以上參照圖12A至圖12C所論述)。
此時,存在各種選項。如方塊1655所示,圖10所示儲存器內計算控制器1005可自圖6所示轉換編碼器420接收輸出串流,且可將已轉換編碼的資料轉發至圖1所示主機電腦105,並且在方塊1660處,圖10所示儲存器內計算控制器1005可將圖8所示輸出字典810發送至圖1所示主機電腦105。作為另一選擇,在方塊1665處,圖10所示儲存器內計算控制器1005可對輸出串流中的資料應用加速功能,且在方塊1670處,圖10所示儲存器內計算控制器1005可將加速功能的結果發送至圖1所示主機電腦105。
在圖12A至圖16B中,示出本發明概念的一些實施例。然而熟習此項技術者將認識到,藉由改變方塊的次序、藉由省略方塊或者藉由包括圖式中未示出的鏈接,本發明概念亦可具有其他實施例。無論是否明確闡述,流程圖的所有此類變化均被認為是本發明概念的實施例。
本發明概念的實施例提供了優於先前技術的技術優點。在傳統系統中,將已解碼資料發送至圖1所示主機電腦105。即使發送至圖1所示主機電腦105的資料是選擇性的(亦即,發送至圖1所示主機電腦105的資料包括感興趣的資料),資料仍是在未壓縮或未編碼的情況下被發送,此意味著藉由選擇性達成了空間節省。對比之下,由於大部分的儲存縮減是藉由編碼而非壓縮來達成的,因此向圖1所示主機電腦105發送已編碼資料通常涉及向圖1所示主機電腦105發送較發送已解碼資料更少的資料。此外,由於資料可自一種編碼方案被轉換編碼成另一種編碼方案,因此使用圖6所示轉換編碼器420可較作為單獨的操作對資料進行解碼及對資料進行重新編碼更高效。
以下論述旨在提供對可在其中實作本發明概念某些態樣的一或多個適合的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境、生物統計回饋(biometric feedback)、或其他輸入訊號的交互作用。本文中所用用語「機器」旨在廣泛地囊括單個機器、虛擬機器、或由以通訊方式耦合的一起運作的機器、虛擬機器、或集體作業的多個裝置。示例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦(tablet)等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一或多個機器可利用連接至一或多個遠端機器(例如藉由網路介面、數據機、或其他通訊性耦合)的一或多個連接。機器可以例如內部網路(intranet)、網際網路、局域網路、廣域網路等實體及/或邏輯網路的方式進行互連。熟習此項技術者將瞭解,網路通訊可利用各種有線及/或無線短程或長程載體及協定,所述載體及協定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍芽®、光學的、紅外線的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本發明概念的實施例,所述相關聯資料包括當由機器存取時使得所述機器執行任務或定義抽象資料類型或低層階硬體上下文的功能、程序、資料結構、應用程式等。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於包括硬驅動機、軟磁碟(floppy disk)、光學儲存器、磁帶(tape)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等其他儲存裝置及其相關聯儲存媒體中。相關聯資料可以封包、串列資料、並列資料、傳播訊號等形式經由包括實體及/或邏輯網路在內的傳輸環境而遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本端及/或遠程地儲存以供機器存取。
本發明概念的實施例可包括包含可由一或多個處理器執行的指令的有形非暫時性機器可讀取媒體(machine-readable medium),所述指令包括用於執行本文所述本發明概念的要素的指令。
上述方法的各種操作可藉由能夠執行所述操作的任何合適的構件(例如各種硬體及/或軟體組件、電路及/或模組)來執行。所述軟體可包括用於實作邏輯功能的可執行指令的有序清單,且可被實施成任何「處理器可讀取媒體」,以供指令執行系統、設備或裝置(例如單核心或多核心處理器或包含處理器的系統)使用或者與指令執行系統、設備或裝置結合使用。
結合本文所揭露實施例所闡述的方法或演算法及功能的方塊或步驟可直接以硬體、以由處理器執行的軟體模組或以此二者的組合來實施。若以軟體實作,功能可作為一或多個指令或碼儲存於有形非暫時性電腦可讀取媒體上或者藉由有形非暫時性電腦可讀取媒體傳輸。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可抹除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可抽換式磁碟、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
已參照所示實施例闡述並示出了本發明概念的原理,應認識到,在不背離此類原理的條件下,可在排列及細節上對所示實施例加以潤飾,且可以任何所需方式加以組合。並且,儘管以上論述著重於具體實施例,然而預期存在其他配置。具體而言,儘管本文中使用例如「根據本發明概念的實施例」或類似詞句,然而該些片語意在籠統地提及實施例可能性,而並非旨在將本發明概念限制於特定實施例配置。本文所用的該些用語可提及可組合成其他實施例的相同或不同的實施例。
前述說明性實施例不應被視為限制本發明概念。儘管已闡述若干實施例,然而熟習此項技術者將易於瞭解,可對該些實施例作出諸多潤飾,而此並不實質上背離本發明的新穎教示內容及優點。因此,所有此類潤飾皆旨在包含於由申請專利範圍所界定的本發明概念的範圍內。
本發明概念的實施例可擴展至以下陳述,且並不限制於此:
陳述1.本發明概念的實施例包括一種轉換編碼器,所述轉換編碼器包括:
緩衝器,用以儲存輸入已編碼資料;
索引映射器,用以自輸入字典映射至輸出字典;
當前編碼緩衝器,用以儲存修改後的當前已編碼資料,所述修改後的當前已編碼資料是回應於所述輸入已編碼資料、所述輸入字典以及自所述輸入字典至所述輸出字典的映射;
先前編碼緩衝器,用以儲存修改後的先前已編碼資料,所述修改後的先前已編碼資料是回應於先前輸入已編碼資料、所述輸入字典以及所述自所述輸入字典至所述輸出字典的映射;以及
規則評估器,用以因應於所述當前編碼緩衝器中的所述修改後的當前已編碼資料、所述先前編碼緩衝器中的所述修改後的先前已編碼資料以及轉換編碼規則而生成輸出串流。
陳述2.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述索引映射器是回應於所述轉換編碼規則。
陳述3.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述轉換編碼規則是回應於所述索引映射器。
陳述4.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述索引映射器是回應於所述輸入字典中條目的選定子集。
陳述5.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述規則評估器包括處理器、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)或通用GPU(GPGPU)中的至少一者。
陳述6.本發明概念的實施例包括如陳述5所述的轉換編碼器,其中所述規則評估器更包括用以實作所述轉換編碼規則的軟體及列出所述轉換編碼規則的表的儲存器中的至少一者。
陳述7.本發明概念的實施例包括如陳述5所述的轉換編碼器,其中所述規則評估器更包括用以實作所述轉換編碼規則的電路系統。
陳述8.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述規則評估器運作以使用所述轉換編碼規則自所述輸入已編碼資料生成所述修改後的當前已編碼資料。
陳述9.本發明概念的實施例包括如陳述8所述的轉換編碼器,其中所述規則評估器運作以將所述修改後的先前已編碼資料添加至所述輸出串流。
陳述10.本發明概念的實施例包括如陳述9所述的轉換編碼器,其中所述規則評估器更運作以將所述修改後的當前已編碼資料自所述當前編碼緩衝器移動至所述先前編碼緩衝器中的所述修改後的先前已編碼資料。
陳述11.本發明概念的實施例包括如陳述8所述的轉換編碼器,其中所述規則評估器運作以使用所述轉換編碼規則將所述修改後的先前已編碼資料修改成包括所述修改後的當前已編碼資料。
陳述12.本發明概念的實施例包括如陳述11所述的轉換編碼器,其中所述規則評估器更運作以在生成所述修改後的當前已編碼資料時將所述輸入已編碼資料的第一編碼方案改變成第二編碼方案。
陳述13.本發明概念的實施例包括如陳述11所述的轉換編碼器,其中所述規則評估器更運作以在生成所述修改後的當前已編碼資料時將所述輸入已編碼資料的第一編碼方案改變成第二編碼方案。
陳述14.本發明概念的實施例包括如陳述8所述的轉換編碼器,其中所述規則評估器運作以自所述輸入已編碼資料確定所述輸入已編碼資料的第一編碼方案,所述第一編碼方案是由所述輸入已編碼資料使用的至少二種編碼方案之一。
陳述15.本發明概念的實施例包括如陳述1所述的轉換編碼器,更包括串流分離器,所述串流分離器用以識別所述輸入已編碼資料中使用第一編碼方案的第一組塊及所述輸入已編碼資料中使用第二編碼方案的第二組塊。
陳述16.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述索引映射器運作以將所述輸入字典中的至少一個條目映射至所述輸出字典中的「不理會」值。
陳述17.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述索引映射器運作以向所述輸出字典添加「不理會」值。
陳述18.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中:
所述輸入已編碼資料是已壓縮的輸入已編碼資料;且
所述轉換編碼器更包括解壓縮引擎。
陳述19.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下自所述輸入已編碼資料產生所述輸出串流。
陳述20.本發明概念的實施例包括如陳述1所述的轉換編碼器,其中所述轉換編碼器包含於固態驅動機(SSD)儲存裝置中。
陳述21.本發明概念的實施例包括如陳述20所述的轉換編碼器,其中所述輸入已編碼資料是自所述SSD儲存裝置內的儲存器接收的。
陳述22.本發明概念的實施例包括一種方法,所述方法包括:
在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊;
確定主機電腦對所述第一資料組塊感興趣;
至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;
確定主機電腦不感興趣第二資料組塊;
至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及
將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
陳述23.本發明概念的實施例包括如陳述22所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括將所述第一已編碼資料中的值改變成「不理會」值。
陳述24.本發明概念的實施例包括如陳述23所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二已編碼資料與包括所述「不理會」值的第三已編碼資料組合。
陳述25.本發明概念的實施例包括如陳述24所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
陳述26.本發明概念的實施例包括如陳述25所述的方法,其中將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第二資料組塊的第一編碼方案改變成所述第二已編碼資料中的第二編碼方案。
陳述27.本發明概念的實施例包括如陳述25所述的方法,其中將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第三已編碼資料的第一編碼方案改變成第二編碼方案。
陳述28.本發明概念的實施例包括如陳述22所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括將所述第一已編碼資料與第三已編碼資料組合。
陳述29.本發明概念的實施例包括如陳述28所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料更包括將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
陳述30.本發明概念的實施例包括如陳述29所述的方法,其中將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第一資料組塊的第一編碼方案改變成所述第一已編碼資料中的第二編碼方案。
陳述31.本發明概念的實施例包括如陳述29所述的方法,其中將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第三已編碼資料的第一編碼方案改變成第二編碼方案。
陳述32.本發明概念的實施例包括如陳述22所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括至少部分地基於轉換編碼規則而自所述第一資料組塊生成所述第一已編碼資料;且
至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括至少部分地基於所述轉換編碼規則而自所述第二資料組塊生成所述第二已編碼資料。
陳述33.本發明概念的實施例包括如陳述22所述的方法,其中在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊包括:
在串流分離器處接收所述輸入已編碼資料;
由所述串流分離器在所述輸入已編碼資料中識別所述第一資料組塊及所述第二資料組塊,所述第一資料組塊是使用第一編碼方案被編碼,且所述第二資料組塊是使用第二編碼方案被編碼;以及
自所述串流分離器接收來自所述輸入已編碼資料的第一資料組塊。
陳述34.本發明概念的實施例包括如陳述22所述的方法,更包括:
自所述儲存裝置接收輸入字典;
至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典;以及
將所述輸出字典輸出至所述主機電腦。
陳述35.本發明概念的實施例包括如陳述34所述的方法,其中至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典包括至少部分地基於轉換編碼規則而將所述輸入字典映射至輸出字典。
陳述36.本發明概念的實施例包括如陳述34所述的方法,其中至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典包括至少部分地基於所述輸入字典中條目的選定子集而將所述輸入字典映射至輸出字典。
陳述37.本發明概念的實施例包括如陳述22所述的方法,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下自所述輸入已編碼資料產生所述第一已編碼資料及所述第二已編碼資料。
陳述38.本發明概念的實施例包括如陳述22所述的方法,其中所述轉換編碼器包含於固態驅動機(SSD)儲存裝置中。
陳述39.本發明概念的實施例包括如陳述38所述的方法,其中:
在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊包括在所述轉換編碼器處自所述SSD儲存裝置內的儲存器接收來自所述輸入已編碼資料的所述第一資料組塊;且
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊包括在所述轉換編碼器處自所述SSD儲存裝置內的所述儲存器接收來自所述輸入已編碼資料的所述第二資料組塊。
陳述40.本發明概念的實施例包括一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得:
在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊;
確定主機電腦對第一資料組塊感興趣;
至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;
確定所述主機電腦對所述第二資料組塊不感興趣;
至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及
將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
陳述41.本發明概念的實施例包括如陳述40所述的製品,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括將所述第一已編碼資料中的值改變成「不理會」值。
陳述42.本發明概念的實施例包括如陳述41所述的製品,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二已編碼資料與包括「不理會」值的第三已編碼資料組合。
陳述43.本發明概念的實施例包括如陳述42所述的製品,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
陳述44.本發明概念的實施例包括如陳述43所述的製品,其中將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第二資料組塊的第一編碼方案改變成所述第二已編碼資料中的第二編碼方案。
陳述45.本發明概念的實施例包括如陳述43所述的製品,其中將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第三已編碼資料的第一編碼方案改變成第二編碼方案。
陳述46.本發明概念的實施例包括如陳述40所述的製品,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括將所述第一已編碼資料與第三已編碼資料組合。
陳述47.本發明概念的實施例包括如陳述46所述的製品,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料更包括將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
陳述48.本發明概念的實施例包括如陳述47所述的製品,其中將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第一資料組塊的第一編碼方案改變成所述第一已編碼資料中的第二編碼方案。
陳述49.本發明概念的實施例包括如陳述47所述的製品,其中將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案包括將所述第三已編碼資料的第一編碼方案改變成第二編碼方案。
陳述50.本發明概念的實施例包括如陳述40所述的製品,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括至少部分地基於轉換編碼規則而自所述第一資料組塊生成所述第一已編碼資料;且
至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括至少部分地基於所述轉換編碼規則而自所述第二資料組塊生成所述第二已編碼資料。
陳述51.本發明概念的實施例包括如陳述40所述的製品,其中在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊包括:
在串流分離器處接收所述輸入已編碼資料;
由所述串流分離器在所述輸入已編碼資料中識別所述第一資料組塊及所述第二資料組塊,所述第一資料組塊是使用第一編碼方案被編碼,且所述第二資料組塊是使用第二編碼方案被編碼;以及
自所述串流分離器接收來自所述輸入已編碼資料的所述第一資料組塊。
陳述52.本發明概念的實施例包括如陳述40所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:
自所述儲存裝置接收輸入字典;
至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典;以及
將所述輸出字典輸出至所述主機電腦。
陳述53.本發明概念的實施例包括如陳述52所述的製品,其中至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典包括至少部分地基於轉換編碼規則而將所述輸入字典映射至輸出字典。
陳述54.本發明概念的實施例包括如陳述52所述的製品,其中至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典包括至少部分地基於所述輸入字典中條目的選定子集而將所述輸入字典映射至輸出字典。
陳述55.本發明概念的實施例包括如陳述40所述的製品,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下自所述輸入已編碼資料產生所述第一已編碼資料及所述第二已編碼資料。
陳述56.本發明概念的實施例包括如陳述40所述的製品,其中所述轉換編碼器包含於固態驅動機(SSD)儲存裝置中。
陳述57.本發明概念的實施例包括如陳述56所述的製品,其中:
在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊包括在所述轉換編碼器處自所述SSD儲存裝置內的儲存器接收來自所述輸入已編碼資料的所述第一資料組塊;且
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊包括在所述轉換編碼器處自所述SSD儲存裝置內的所述儲存器接收來自所述輸入已編碼資料的所述第二資料組塊。
陳述58.本發明概念的實施例包括一種儲存裝置,所述儲存裝置包括:
用於輸入已編碼資料的儲存器;
控制器,用以在所述儲存器上處理來自主機電腦的讀取請求及寫入請求;
儲存器內計算(ISC)控制器,用以接收源自所述主機電腦的述詞,所述述詞將被應用於儲存於所述儲存器中的所述輸入已編碼資料;以及
轉換編碼器,包括索引映射器,所述索引映射器用以自所述輸入已編碼資料的輸入字典映射至輸出字典,所述輸入字典包括至少一個第一條目及至少一個第二條目,所述至少一個第一條目映射至所述輸出字典中的至少一個第三條目,且所述至少一個第二條目映射至所述輸出字典中的「不理會」條目。
陳述59.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述轉換編碼器包括處理器、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)或通用GPU(GPGPU)中的至少一者。
陳述60.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述ISC控制器運作以對來自所述轉換編碼器的輸出已編碼資料應用加速功能。
陳述61.本發明概念的實施例包括如陳述60所述的儲存裝置,其中所述ISC控制器更運作以將來自所述轉換編碼器的對所述輸出已編碼資料的所述加速功能的結果輸出至所述主機電腦。
陳述62.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述ISC控制器運作以將所述轉換編碼器的輸出已編碼資料轉發至所述主機電腦。
陳述63.本發明概念的實施例包括如陳述62所述的儲存裝置,其中所述ISC控制器更運作以將所述輸出字典轉發至所述主機電腦。
陳述64.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述轉換編碼器運作以至少部分地基於所述輸入已編碼資料及所述自所述輸入字典至所述輸出字典的映射而生成輸出已編碼資料。
陳述65.本發明概念的實施例包括如陳述64所述的儲存裝置,其中所述轉換編碼器包括:
緩衝器,用以儲存所述輸入已編碼資料;
所述索引映射器;
當前編碼緩衝器,用以儲存修改後的當前已編碼資料,所述修改後的當前已編碼資料是回應於所述輸入已編碼資料及所述自所述輸入字典至所述輸出字典的映射;
先前編碼緩衝器,用以儲存修改後的先前已編碼資料,所述修改後的先前已編碼資料是回應於先前輸入已編碼資料及所述自所述輸入字典至所述輸出字典的映射;以及
規則評估器,用以因應於所述當前編碼緩衝器中的所述修改後的當前已編碼資料、所述先前編碼緩衝器中的所述修改後的先前已編碼資料以及轉換編碼規則而生成輸出串流。
陳述66.本發明概念的實施例包括如陳述65所述的儲存裝置,其中所述轉換編碼規則是至少部分地基於所述述詞。
陳述67.本發明概念的實施例包括如陳述65所述的儲存裝置,其中所述規則評估器在不對所述輸入已編碼資料進行解碼的情況下因應於所述當前編碼緩衝器中的所述修改後的當前已編碼資料、所述先前編碼緩衝器中的所述修改後的先前已編碼資料以及所述轉換編碼規則而生成所述輸出串流。
陳述68.本發明概念的實施例包括如陳述64所述的儲存裝置,其中:
所述輸入已編碼資料使用第一編碼方案;
所述輸出已編碼資料使用第二編碼方案;且
所述第二編碼方案不同於所述第一編碼方案。
陳述69.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述輸入已編碼資料以行式格式儲存於所述儲存器中。
陳述70.本發明概念的實施例包括如陳述69所述的儲存裝置,其中所述輸入已編碼資料包括使用阿帕奇鑲木地板(Apache Parquet)儲存格式儲存的輸入檔案。
陳述71.本發明概念的實施例包括如陳述69所述的儲存裝置,更包括行組塊處理器,所述行組塊處理器用以處理包括所述輸入已編碼資料的行組塊並將所述輸入已編碼資料轉發至所述轉換編碼器。
陳述72.本發明概念的實施例包括如陳述71所述的儲存裝置,其中所述行組塊處理器包括所述轉換編碼器。
陳述73.本發明概念的實施例包括如陳述71所述的儲存裝置,其中所述行組塊處理器包括處理器、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)或通用GPU(GPGPU)中的至少一者。
陳述74.本發明概念的實施例包括如陳述58所述的儲存裝置,其中所述轉換編碼器運作以至少部分地基於所述述詞而生成欲應用於所述輸入已編碼資料的轉換編碼規則,進而產生輸出已編碼資料。
陳述75.本發明概念的實施例包括如陳述74所述的儲存裝置,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下產生所述輸出已編碼資料。
陳述76.本發明概念的實施例包括一種方法,所述方法包括:
在轉換編碼器處接收欲應用於輸入已編碼資料的述詞;存取所述輸入已編碼資料的輸入字典;
識別所述輸入字典中由所述述詞涵蓋的至少一個第一條目及所述輸入字典中未由所述述詞涵蓋的至少一個第二條目;
生成輸出字典,所述輸出字典排除所述字典中未由所述述詞涵蓋的所述至少一個第二條目,轉換編碼字典包括至少第三條目及「不理會」條目;以及
由所述轉換編碼器生成字典映射,所述字典映射將所述輸入字典中的所述至少一個第一條目映射至所述輸出字典中的所述至少一個第三條目且將所述輸入字典中未由所述述詞涵蓋的所述至少一個第二條目映射至所述輸出字典中的所述「不理會」條目。
陳述77.本發明概念的實施例包括如陳述76所述的方法,其中所述輸入已編碼資料是以行式格式儲存。
陳述78.本發明概念的實施例包括如陳述77所述的方法,其中所述輸入已編碼資料包括使用Apache Parquet儲存格式儲存的輸入檔案。
陳述79.本發明概念的實施例包括如陳述76所述的方法,其中所述輸入已編碼資料包括以行式格式儲存的行組塊。
陳述80.本發明概念的實施例包括如陳述76所述的方法,更包括:
使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料;以及
輸出所述輸出已編碼資料。
陳述81.本發明概念的實施例包括如陳述80所述的方法,其中使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料包括:
在所述轉換編碼器處接收來自所述輸入已編碼資料的第一資料組塊;
確定所述第一資料組塊由所述述詞涵蓋;
使用所述字典映射,至少部分地基於所述主機電腦電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;
確定所述第二資料組塊未由所述述詞涵蓋;
使用所述字典映射,至少部分地基於所述主機電腦電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及
輸出所述第一已編碼資料及所述第二已編碼資料。
陳述82.本發明概念的實施例包括如陳述81所述的方法,其中在所述轉換編碼器處接收來自所述輸入已編碼資料的第一資料組塊包括:
在行組塊處理器處,自儲存器內計算(ISC)控制器接收區塊識別符(identifier,ID)清單;
由所述行組塊處理器存取包括所述區塊ID清單中的區塊ID的行組塊;
由所述行組塊處理器自所述行組塊擷取所述輸入已編碼資料;以及
將所述輸入已編碼資料自所述行組塊處理器轉發至所述轉換編碼器。
陳述83.本發明概念的實施例包括如陳述81所述的方法,更包括至少部分地基於所述述詞來生成欲應用於所述輸入已編碼資料的轉換編碼規則。
陳述84.本發明概念的實施例包括如陳述80所述的方法,其中使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料包括在不對所述輸入已編碼資料進行解碼的情況下使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料。
陳述85.本發明概念的實施例包括如陳述80所述的方法,其中:
所述輸入已編碼資料使用第一編碼方案;
所述輸出已編碼資料使用第二編碼方案;且
所述第二編碼方案不同於所述第一編碼方案。
陳述86.本發明概念的實施例包括如陳述80所述的方法,其中輸出所述輸出已編碼資料包括將所述輸出已編碼資料輸出至ISC控制器。
陳述87.本發明概念的實施例包括如陳述86所述的方法,其中將所述輸出已編碼資料輸出至ISC控制器更包括將所述輸出字典輸出至所述ISC控制器。
陳述88.本發明概念的實施例包括如陳述87所述的方法,更包括將所述輸出已編碼資料及所述輸出字典自所述ISC控制器轉發至主機電腦。
陳述89.本發明概念的實施例包括如陳述87所述的方法,更包括由所述ISC控制器對所述輸出已編碼資料執行加速功能以產生經加速資料。
陳述90.本發明概念的實施例包括如陳述89所述的方法,更包括將所述經加速資料自所述ISC控制器輸出至主機電腦。
陳述91.本發明概念的實施例包括如陳述76所述的方法,更包括輸出所述輸出字典。
陳述92.本發明概念的實施例包括如陳述76所述的方法,其中接收欲應用於輸入已編碼資料的述詞包括自ISC控制器接收欲應用於所述輸入已編碼資料的所述述詞。
陳述93.本發明概念的實施例包括如陳述92所述的方法,更包括自所述ISC控制器接收所述輸入字典。
陳述94.本發明概念的實施例包括如陳述76所述的方法,更包括:
確定所述輸入字典中不存在未由所述述詞涵蓋的條目;以及
在不將所述輸入已編碼資料轉換編碼成輸出已編碼資料的情況下輸出所述輸入已編碼資料。
陳述95.本發明概念的實施例包括一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得:
在轉換編碼器處接收欲應用於輸入已編碼資料的述詞;
存取所述輸入已編碼資料的輸入字典;
識別所述輸入字典中由所述述詞涵蓋的至少一個第一條目及所述輸入字典中未由所述述詞涵蓋的至少一個第二條目;
生成輸出字典,所述輸出字典排除所述輸入字典中未由所述述詞涵蓋的所述至少一個第二條目,轉換編碼字典包括至少第三條目及「不理會」條目;以及
由所述轉換編碼器生成字典映射,所述字典映射將所述輸入字典中的所述至少一個第一條目映射至所述輸出字典中的所述至少一個第三條目且將所述輸入字典中未由所述述詞涵蓋的所述至少一個第二條目映射至所述輸出字典中的所述「不理會」條目。
陳述96.本發明概念的實施例包括如陳述95所述的製品,其中所述輸入已編碼資料是以行式格式儲存。
陳述97.本發明概念的實施例包括如陳述96所述的製品,其中所述輸入已編碼資料包括使用Apache Parquet儲存格式儲存的輸入檔案。
陳述98.本發明概念的實施例包括如陳述95所述的製品,其中所述輸入已編碼資料包括以行式格式儲存的行組塊。
陳述99.本發明概念的實施例包括如陳述95所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:
使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料;以及
輸出所述輸出已編碼資料。
陳述100.本發明概念的實施例包括如陳述99所述的製品,其中使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料包括:
在所述轉換編碼器處接收來自所述輸入已編碼資料的第一資料組塊;
確定所述第一資料組塊由所述述詞涵蓋;
使用所述字典映射,至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料;
在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊;
確定所述第二資料組塊未由所述述詞涵蓋;
使用所述字典映射,至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及
輸出所述第一已編碼資料及所述第二已編碼資料。
陳述101.本發明概念的實施例包括如陳述100所述的製品,其中在所述轉換編碼器處接收來自所述輸入已編碼資料的第一資料組塊包括:
在行組塊處理器處,自儲存器內計算(ISC)控制器接收區塊識別符(ID)清單;
由所述行組塊處理器存取包括區塊ID清單中的區塊ID的行組塊;
由所述行組塊處理器自所述行組塊擷取所述輸入已編碼資料;以及
將所述輸入已編碼資料自所述行組塊處理器轉發至所述轉換編碼器。
陳述102.本發明概念的實施例包括如陳述100所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得至少部分地基於所述述詞而生成欲應用於所述輸入已編碼資料的轉換編碼規則。
陳述103.本發明概念的實施例包括如陳述99所述的製品,其中使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料包括在不對所述輸入已編碼資料進行解碼的情況下使用所述字典映射將所述輸入已編碼資料轉換編碼成輸出已編碼資料。
陳述104.本發明概念的實施例包括如陳述99所述的製品,其中:
所述輸入已編碼資料使用第一編碼方案;
所述輸出已編碼資料使用第二編碼方案;且
所述第二編碼方案不同於所述第一編碼方案。
陳述105.本發明概念的實施例包括如陳述99所述的製品,其中輸出所述輸出已編碼資料包括將所述輸出已編碼資料輸出至ISC控制器。
陳述106.本發明概念的實施例包括如陳述105所述的製品,其中將所述輸出已編碼資料輸出至ISC控制器更包括將所述輸出字典輸出至所述ISC控制器。
陳述107.本發明概念的實施例包括如陳述106所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得將所述輸出已編碼資料及所述輸出字典自所述ISC控制器轉發至主機電腦。
陳述108.本發明概念的實施例包括如陳述106所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得由所述ISC控制器對所述輸出已編碼資料執行加速功能以產生經加速資料。
陳述109.本發明概念的實施例包括如陳述108所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得將所述經加速資料自所述ISC控制器輸出至主機電腦。
陳述110.本發明概念的實施例包括如陳述95所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得輸出所述輸出字典。
陳述111.本發明概念的實施例包括如陳述95所述的製品,其中接收欲應用於輸入已編碼資料的述詞包括自ISC控制器接收欲應用於所述輸入已編碼資料的所述述詞。
陳述112.本發明概念的實施例包括如陳述111所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得自所述ISC控制器接收所述輸入字典。
陳述113.本發明概念的實施例包括如陳述95所述的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:
確定所述輸入字典中不存在未由所述述詞涵蓋的條目;以及
在不將所述輸入已編碼資料轉換編碼成輸出已編碼資料的情況下輸出所述輸入已編碼資料。
因此,鑒於本文中所述的實施例的各種變更,此詳細說明及隨附材料僅旨在為說明性的,且不應被視為限制本發明概念的範圍。因此,作為本發明概念所主張的申請專利範圍是上述所有修改,而上述修改可歸屬於以下申請專利範圍及其等效形式的範圍及精神內。
105:主機電腦/機器
110:處理器
115:記憶體
120:儲存裝置/SSD
125:記憶體控制器
130:裝置驅動器
205:時鐘
210:網路連接器
215:匯流排
220:使用者介面
225:輸入/輸出引擎
305、515:儲存器
310、320:箭頭
315:儲存器內處理器/儲存器內計算
405:已壓縮資料
410:解壓縮器
415:已解壓縮資料
420:轉換編碼器
425:已轉換編碼的資料
430:解碼器
435:已過濾的普通資料
505:主機介面層(HIL)
510:SSD控制器/儲存裝置控制器
515-1、515-2、515-3、515-4、515-5、515-6、515-7、515-8:快閃記憶體晶片
520-1、520-2、520-3、520-4:通道
525:轉譯層
530:檔案至區塊映射
605:循環緩衝器/緩衝器
610:串流分離器
615:索引映射器
620:當前編碼緩衝器
625:先前編碼緩衝器
630:轉換編碼規則
635:規則評估器
705-1、705-2、705-3:組塊
805:輸入字典
810:輸出字典
905:檔案元資料
910-1、910-2、910-3:行組塊
915:檔案至區塊映射
920、925:字典頁面
930-1、930-2、930-3:資料頁面
1005:儲存器內計算控制器
1010:行組塊處理器
1105:輸入緩衝器
1110:輸出緩衝器
1115:述詞評估器
1120:「不理會」評估器
1205、1210、1215、1220、1225、1230、1235、1240、1245、1250、1255、1260、1265、1270、1275、1280、1285、1290、1295、1305、1310、1315、1405、1410、1420、1425、1430、1440、1445、1505、1510、1515、1520、1525、1605、1610、1615、1620、1625、1630、1635、1640、1645、1650、1655、1660、1665、1670:方塊
1415、1435:虛線
圖1示出根據本發明概念實施例包括可支援已編碼資料的轉換編碼的儲存裝置(例如固態驅動機(SSD))的系統。
圖2示出圖1所示機器的一些其他細節。
圖3示出圖1所示儲存裝置與圖1所示處理器使用不同的方法傳達相同的資料。
圖4示出根據本發明概念實施例,圖1所示儲存裝置與圖1所示處理器傳達已轉換編碼的資料。
圖5示出根據本發明概念實施例的圖1所示儲存裝置的細節。
圖6示出根據本發明概念實施例的圖4所示轉換編碼器的細節。
圖7示出根據本發明概念實施例,圖6所示串流分離器(stream splitter)將輸入已編碼資料劃分成組塊。
圖8示出根據本發明概念實施例,圖6所示索引映射器將輸入字典映射至輸出字典。
圖9示出以行式格式儲存的示例性檔案。
圖10示出根據本發明概念實施例被配置成實作轉換編碼的圖1所示儲存裝置,其中資料是以行式格式儲存。
圖11示出根據本發明概念實施例被配置成實作轉換編碼的圖10所示行組塊處理器,其中資料是以行式格式儲存。
圖12A至圖12C示出根據本發明概念實施例,圖4及圖6所示轉換編碼器對資料進行轉換編碼的示例性程序的流程圖。
圖13示出圖6所示串流分離器將輸入已編碼資料劃分成組塊的示例性程序的流程圖。
圖14A至圖14B示出根據本發明概念實施例,圖10所示行組塊處理器及/或圖4所示轉換編碼器對以行式格式儲存的資料進行轉換編碼的示例性程序的流程圖。
圖15示出根據本發明概念實施例,圖6所示索引映射器將輸入字典映射至輸出字典的示例性程序的流程圖。
圖16A至圖16B示出根據本發明概念實施例,圖10所示儲存器內計算控制器管理自圖1所示主機電腦接收的述詞(predicate)並潛在地對已轉換編碼的資料執行加速功能的示例性程序的流程圖。
420:轉換編碼器
605:循環緩衝器/緩衝器
610:串流分離器
615:索引映射器
620:當前編碼緩衝器
625:先前編碼緩衝器
630:轉換編碼規則
635:規則評估器
Claims (20)
- 一種轉換編碼器,包括: 緩衝器,用以儲存輸入已編碼資料; 索引映射器,用以自輸入字典映射至輸出字典; 當前編碼緩衝器,用以儲存修改後的當前已編碼資料,所述修改後的當前已編碼資料是回應於所述輸入已編碼資料、所述輸入字典以及自所述輸入字典至所述輸出字典的映射; 先前編碼緩衝器,用以儲存修改後的先前已編碼資料,所述修改後的先前已編碼資料是回應於先前輸入已編碼資料、所述輸入字典以及自所述輸入字典至所述輸出字典的所述映射;以及 規則評估器,用以因應於所述當前編碼緩衝器中的所述修改後的當前已編碼資料、所述先前編碼緩衝器中的所述修改後的先前已編碼資料以及轉換編碼規則而生成輸出串流。
- 如請求項1所述的轉換編碼器,其中所述規則評估器包括處理器、現場可程式化閘陣列、特殊應用積體電路、圖形處理單元及通用圖形處理單元中的至少一者。
- 如請求項1所述的轉換編碼器,其中所述規則評估器運作以使用所述轉換編碼規則自所述輸入已編碼資料生成所述修改後的當前已編碼資料。
- 如請求項3所述的轉換編碼器,其中所述規則評估器運作以使用所述轉換編碼規則來將所述修改後的先前已編碼資料修改成包括所述修改後的當前已編碼資料。
- 如請求項4所述的轉換編碼器,其中所述規則評估器更運作以將所述輸入已編碼資料及所述修改後的先前已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
- 如請求項1所述的轉換編碼器,更包括串流分離器,所述串流分離器用以識別所述輸入已編碼資料中使用第一編碼方案的第一組塊及所述輸入已編碼資料中使用第二編碼方案的第二組塊。
- 如請求項1所述的轉換編碼器,其中所述索引映射器運作以將所述輸入字典中的至少一個條目映射至所述輸出字典中的「不理會」值。
- 如請求項1所述的轉換編碼器,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下自所述輸入已編碼資料產生所述輸出串流。
- 一種方法,包括: 在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊; 確定主機電腦對所述第一資料組塊感興趣; 至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料; 在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊; 確定所述主機電腦對所述第二資料組塊不感興趣; 至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及 將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
- 如請求項9所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括將所述第一已編碼資料中的值改變成「不理會」值。
- 如請求項10所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二已編碼資料與包括所述「不理會」值的第三已編碼資料組合。
- 如請求項11所述的方法,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料更包括將所述第二資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
- 如請求項9所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括將所述第一已編碼資料與第三已編碼資料組合。
- 如請求項13所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料更包括將所述第一資料組塊及所述第三已編碼資料中的至少一者的第一編碼方案改變成第二編碼方案。
- 如請求項9所述的方法,其中至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料包括至少部分地基於轉換編碼規則而自所述第一資料組塊生成所述第一已編碼資料;以及 至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括至少部分地基於所述轉換編碼規則而自所述第二資料組塊生成所述第二已編碼資料。
- 如請求項9所述的方法,其中在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊包括: 在串流分離器處接收所述輸入已編碼資料; 由所述串流分離器在所述輸入已編碼資料中識別所述第一資料組塊及所述第二資料組塊,所述第一資料組塊是使用第一編碼方案被編碼,且所述第二資料組塊是使用第二編碼方案被編碼;以及 自所述串流分離器接收來自所述輸入已編碼資料的所述第一資料組塊。
- 如請求項9所述的方法,更包括: 自所述儲存裝置接收輸入字典; 至少部分地基於所述主機電腦感興趣的資料及所述主機電腦不感興趣的資料而將所述輸入字典映射至輸出字典;以及 將所述輸出字典輸出至所述主機電腦。
- 如請求項9所述的方法,其中所述轉換編碼器運作以在不對所述輸入已編碼資料進行解碼的情況下自所述輸入已編碼資料產生所述第一已編碼資料及所述第二已編碼資料。
- 一種製品,包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得: 在轉換編碼器處自儲存裝置接收來自輸入已編碼資料的第一資料組塊; 確定主機電腦對所述第一資料組塊感興趣; 至少部分地基於所述主機電腦對所述第一資料組塊感興趣而自所述第一資料組塊生成第一已編碼資料; 在所述轉換編碼器處自所述儲存裝置接收來自所述輸入已編碼資料的第二資料組塊; 確定所述主機電腦對所述第二資料組塊不感興趣; 至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料;以及 將所述第一已編碼資料及所述第二已編碼資料輸出至所述主機電腦。
- 如請求項19所述的製品,其中至少部分地基於所述主機電腦對所述第二資料組塊不感興趣而自所述第二資料組塊生成第二已編碼資料包括將所述第一已編碼資料中的值改變成「不理會」值。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962834900P | 2019-04-16 | 2019-04-16 | |
US62/834,900 | 2019-04-16 | ||
US201962945883P | 2019-12-09 | 2019-12-09 | |
US201962945877P | 2019-12-09 | 2019-12-09 | |
US62/945,877 | 2019-12-09 | ||
US62/945,883 | 2019-12-09 | ||
US16/820,665 | 2020-03-16 | ||
US16/820,665 US11139827B2 (en) | 2019-03-15 | 2020-03-16 | Conditional transcoding for encoded data |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202107856A true TW202107856A (zh) | 2021-02-16 |
TWI825305B TWI825305B (zh) | 2023-12-11 |
Family
ID=72913839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109112659A TWI825305B (zh) | 2019-04-16 | 2020-04-15 | 轉換編碼器及進行轉換編碼的方法及製品 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP7381393B2 (zh) |
KR (3) | KR20200121760A (zh) |
CN (1) | CN111832257B (zh) |
TW (1) | TWI825305B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11791838B2 (en) * | 2021-01-15 | 2023-10-17 | Samsung Electronics Co., Ltd. | Near-storage acceleration of dictionary decoding |
CN115719059B (zh) * | 2022-11-29 | 2023-08-08 | 北京中科智加科技有限公司 | 一种莫尔斯分组纠错方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6549666B1 (en) * | 1994-09-21 | 2003-04-15 | Ricoh Company, Ltd | Reversible embedded wavelet system implementation |
CA2156889C (en) * | 1994-09-30 | 1999-11-02 | Edward L. Schwartz | Method and apparatus for encoding and decoding data |
US5861827A (en) * | 1996-07-24 | 1999-01-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
EP2487798B1 (en) * | 2004-12-07 | 2016-08-10 | Nippon Telegraph And Telephone Corporation | Information compression-coding device, its decoding device, method thereof, program thereof and recording medium storing the program |
US7102552B1 (en) * | 2005-06-07 | 2006-09-05 | Windspring, Inc. | Data compression with edit-in-place capability for compressed data |
JP4266218B2 (ja) * | 2005-09-29 | 2009-05-20 | 株式会社東芝 | 動画像データの再圧縮符号化方法、装置及びプログラム |
US7646317B2 (en) * | 2007-04-30 | 2010-01-12 | Jen-Te Chen | Decoding method utilizing temporally ambiguous code and apparatus using the same |
US8090027B2 (en) * | 2007-08-29 | 2012-01-03 | Red Hat, Inc. | Data compression using an arbitrary-sized dictionary |
US7889102B2 (en) * | 2009-02-26 | 2011-02-15 | Red Hat, Inc. | LZSS with multiple dictionaries and windows |
US8159374B2 (en) * | 2009-11-30 | 2012-04-17 | Red Hat, Inc. | Unicode-compatible dictionary compression |
US9385751B2 (en) * | 2014-10-07 | 2016-07-05 | Protein Metrics Inc. | Enhanced data compression for sparse multidimensional ordered series data |
EP3119003A3 (en) * | 2015-07-13 | 2017-03-01 | Fujitsu Limited | Encoding computer program, encoding method, encoding apparatus, decoding computer program, decoding method, and decoding apparatus |
JP2017028372A (ja) * | 2015-07-16 | 2017-02-02 | 沖電気工業株式会社 | 符号化方式変換装置、方法及びプログラム |
CN108197087B (zh) * | 2018-01-18 | 2021-11-16 | 奇安信科技集团股份有限公司 | 字符编码识别方法及装置 |
-
2020
- 2020-04-15 TW TW109112659A patent/TWI825305B/zh active
- 2020-04-16 KR KR1020200046249A patent/KR20200121760A/ko not_active Application Discontinuation
- 2020-04-16 JP JP2020073662A patent/JP7381393B2/ja active Active
- 2020-04-16 KR KR1020200046258A patent/KR20200121761A/ko unknown
- 2020-04-16 CN CN202010298627.5A patent/CN111832257B/zh active Active
-
2024
- 2024-05-20 KR KR1020240065311A patent/KR20240078422A/ko active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20200121760A (ko) | 2020-10-26 |
TWI825305B (zh) | 2023-12-11 |
JP7381393B2 (ja) | 2023-11-15 |
JP2020178347A (ja) | 2020-10-29 |
KR20240078422A (ko) | 2024-06-03 |
CN111832257B (zh) | 2023-02-28 |
KR20200121761A (ko) | 2020-10-26 |
CN111832257A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11838035B2 (en) | Using predicates in conditional transcoder for column store | |
US8578058B2 (en) | Real-time multi-block lossless recompression | |
US6657565B2 (en) | Method and system for improving lossless compression efficiency | |
US10187081B1 (en) | Dictionary preload for data compression | |
US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
US8937564B2 (en) | System, method and non-transitory computer readable medium for compressing genetic information | |
KR20240078422A (ko) | 인코딩된 데이터에 대한 조건부 트랜스코딩 | |
TWI789392B (zh) | 藉由使用主要資料篩的資料無損縮減及對於已經使用主要資料篩來無損地縮減的資料進行多維度搜索和內容關聯的檢索 | |
WO2015058633A1 (en) | Efficient one-pass cache-aware compression | |
US8407378B2 (en) | High-speed inline data compression inline with an eight byte data path | |
JPH07261977A (ja) | データ圧縮方法および装置ならびにデータ復元方法および装置 | |
TW202311996A (zh) | 用於資料壓縮的系統以及方法 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
KR20230023586A (ko) | 데이터 분할 및 암호화를 위한 시스템, 방법 및 장치 | |
Kella et al. | Apcfs: Autonomous and parallel compressed file system | |
JP7305609B2 (ja) | 受信したデータを処理する装置 | |
US20240106459A1 (en) | Compression device and compression method | |
US20140236897A1 (en) | System, method and non-transitory computer readable medium for compressing genetic information |