CN116263749A - 存储系统和控制其的方法以及存储装置和控制其的方法 - Google Patents
存储系统和控制其的方法以及存储装置和控制其的方法 Download PDFInfo
- Publication number
- CN116263749A CN116263749A CN202211393512.XA CN202211393512A CN116263749A CN 116263749 A CN116263749 A CN 116263749A CN 202211393512 A CN202211393512 A CN 202211393512A CN 116263749 A CN116263749 A CN 116263749A
- Authority
- CN
- China
- Prior art keywords
- bit data
- length
- data block
- codeword
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000003860 storage Methods 0.000 title claims abstract description 36
- 230000015654 memory Effects 0.000 claims description 81
- 230000010287 polarization Effects 0.000 claims description 15
- 238000012937 correction Methods 0.000 claims description 4
- 238000007906 compression Methods 0.000 description 49
- 230000006835 compression Effects 0.000 description 47
- 230000008569 process Effects 0.000 description 35
- 238000012545 processing Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 8
- 239000013598 vector Substances 0.000 description 7
- 238000000354 decomposition reaction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000169170 Boreogadus saida Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052760 oxygen Inorganic materials 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000029058 respiratory gaseous exchange Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0023—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
- H04L1/0028—Formatting
- H04L1/003—Adaptive formatting arrangements particular to signalling, e.g. variable amount of bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6312—Error control coding in combination with data compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
- H03M13/6588—Compression or short representation of variables
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1642—Formats specially adapted for sequence numbers
- H04L1/165—Variable formats
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
公开存储系统和控制其的方法以及存储装置和控制其的方法。所述存储系统包括:存储装置,被配置为:存储多个编码值,其中所述多个编码值中的每个值具有预定值长度并在预定范围内,并且其中预定范围不是2的幂;和至少一个处理器,被配置为:将所述多个编码值分组成码字;获得多个位数据块;其中所述多个位数据块中的每个位数据块表示所述多个编码值中的对应编码值,并且其中每个位数据块的长度选自基于预定范围确定的一个或多个预定位数据块长度;从多个可变长度前缀选择可变长度前缀,其中可变长度前缀指示所述多个位数据块的位数据块长度;获得包括可变长度前缀和所述多个位数据块的压缩的码字,和基于压缩的码字对所述多个编码值进行解码。
Description
技术领域
与实施例一致的设备和方法涉及压缩处理,更具体地,小数压缩处理。
背景技术
功耗在现代计算机系统中形成扩展障碍。随着频率增大,动态信号转换耗散更多的能量,并且随着晶体管缩小,漏电流正变得更严重。与此同时,产品设计者处理市场的更高的性能需求。因此,存在加强的努力,以减少每个功能单元的嵌入式存储器和逻辑门的数量。
存储器组件(例如,寄存器堆、静态随机存取存储器(SRAM)单元、嵌入式动态随机存取存储器(DRAM)等)可构成硅布局中的重要部分。它们通常存储多字段,多字段由于流要求而各自可具有0、1、……、N-1的可能值,其中,N不是二的幂或非双积(dyadic)。因此,存储的数据是可压缩的,但是常规压缩技术(诸如,霍夫曼(Huffman)编码、Tunstall编码、算术编码等)导致高的门数(gate count)压缩器和解压缩器,这抵消了位节省增益。此外,因为设计必须支持最坏情况的数据分布,所以许多常规压缩技术输出不可保证门数减少的可变长度码字。
类似地,通过长线的受限于采用非二的幂的间隔值的数据传输可能具有严重的功率影响以及小故障和路由问题。再次,常规压缩的复杂性防止冗余削减。
发明内容
根据实施例,一种存储系统包括:存储装置,被配置为:存储多个编码值,其中,所述多个编码值中的每个值具有预定值长度并且在预定范围内,并且其中,所述预定范围不是2的幂;以及至少一个处理器,被配置为:将所述多个编码值分组成码字;获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个编码值中的对应编码值,并且其中,每个位数据块的长度从基于所述预定范围确定的一个或多个预定位数据块长度之中被选择;从多个可变长度前缀之中选择可变长度前缀,其中,可变长度前缀指示所述多个位数据块的位数据块长度;获得包括可变长度前缀和所述多个位数据块的压缩的码字;并且基于压缩的码字,对所述多个编码值进行解码。
根据实施例,一种存储装置包括:存储器,被配置为:存储多个值,其中,所述多个值中的每个值在范围内,并且其中,所述范围不是2的幂;缓冲器;以及至少一个处理器,被配置为:选择码字长度,其中,所述码字长度基于所述范围而被选择,确定位数据块长度的多个组合,其中,所述多个组合的数量基于所述范围的2的幂分量的数量;将多个前缀分派给所述多个组合,其中,针对每个组合,包括在每个组合中的位数据块长度与分派给每个组合的对应前缀的长度的总和小于所述码字长度;并且将分派的所述多个前缀存储在表中;将所述多个值分组成具有所述码字长度的码字;获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个值中的对应值,并且其中,每个位数据块的长度从位数据块长度之中被选择;基于所述表,选择与所述多个位数据块对应的前缀,获得包括所述前缀和所述多个位数据块的压缩的码字;并且将压缩的码字存储在缓冲器中。
根据实施例,一种控制存储系统的方法,所述方法通过至少一个处理器来执行并且包括:从存储设备获得多个编码值,其中,所述多个编码值中的每个值具有预定值长度并且在预定范围内,并且其中,所述预定范围不是2的幂;将所述多个编码值分组成码字;获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个编码值中的对应编码值,并且其中,每个位数据块的长度从基于所述预定范围确定的一个或多个预定位数据块长度之中被选择;从多个可变长度前缀之中选择可变长度前缀,其中,可变长度前缀指示所述多个位数据块的位数据块长度;获得包括可变长度前缀和所述多个位数据块的压缩的码字;以及基于压缩的码字,对所述多个编码值进行解码。
根据实施例,一种控制存储装置的方法包括:从存储器获得多个值,其中,所述多个值中的每个值在范围内,并且其中,所述范围不是2的幂;选择码字长度,其中,所述码字长度基于所述范围而被选择,确定位数据块长度的多个组合,其中,所述多个组合的数量基于所述范围的2的幂分量的数量;将多个前缀分派给所述多个组合,其中,针对每个组合,包括在每个组合中的位数据块长度与分派给每个组合的对应前缀的长度的总和小于所述码字长度;以及将分派的所述多个前缀存储在表中;将所述多个值分组成具有所述码字长度的码字;获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个值中的对应值,并且其中,每个位数据块的长度从位数据块长度之中被选择;基于所述表,选择与所述多个位数据块对应的前缀;获得包括所述前缀和所述多个位数据块的压缩的码字;以及将压缩的码字存储在缓冲器中。
附图说明
图1是根据实施例的存储器系统的框图。
图2是示意性地示出根据实施例的控制器的框图。
图3是示意性地示出根据实施例的纠错码(ECC)编码器/解码器的示例的框图。
图4A至图4D是用于构造和使用用于小数压缩的小数压缩器和小数解压缩器的处理的流程图。
图5A至图5C示出根据实施例的示例前缀表。
图6是根据实施例的小数压缩模块的框图。
图7是根据实施例的小数压缩模块的框图。
图8是根据实施例的小数压缩模块的框图。
图9A至图9C是根据实施例的用于控制存储系统和装置的处理的流程图。
图10是示出根据实施例的存储器和总线节省的图表。
图11是根据实施例的包括存储器系统的计算机系统的框图。
图12是根据实施例的存储卡的框图。
图13是根据实施例的包括存储器系统的网络系统的框图。
具体实施方式
图1是示意性地示出根据示例实施例的存储器系统的框图。参照图1,存储器系统1000可包括存储器装置1100和控制器1200。
存储器装置1100可被配置为根据控制器1200的控制来执行写入操作、读取操作和擦除操作。在实施例中,存储器装置1100可以是例如非易失性存储器装置。
控制器1200可连接到主机和存储器装置1100。控制器1200可响应于来自主机的请求而访问存储器装置1100。例如,控制器1200可被配置为控制存储器装置1100的写入操作、读取操作和擦除操作。控制器1200可被配置为提供存储器装置1100与主机之间的接口。控制器1200可被配置为驱动用于控制存储器装置1100的固件。
控制器1200可从主机接收数据。控制器1200可对输入数据(例如,如图1中所示的DATA)进行编码,以生成编码数据DATA_C。控制器1200可被配置为将控制信号CTRL和地址ADDR提供给存储器装置1100。控制器1200可被配置为与存储器装置1100交换编码数据DATA_C。控制器1200可从存储器装置1100接收编码数据DATA_C,以对编码数据DATA_C进行解码。控制器1200可将解码数据(例如,如图1中所示的DATA)传送到主机。
在实施例中,存储器系统1000可以是固态驱动器(SSD),固态驱动器(SSD)包括诸如存储卡形状因数(包括安全数字及其变型等作为标准硬盘驱动器(HDD)形状因数)、标准卡形状因数(包括迷你串行AT附件(mSATA)、PCI快速迷你卡、M.2等)、具有接口(诸如,并行ATA(PATA)或SATA)的模块上盘形状因数、用于应用(诸如,机架安装系统)的盒形状因数、裸板形状因数(包括PCI快速(PCIe)、迷你PCIe、迷你双列直插存储器模块(DIMM)、MO-297等)、以及球栅阵列形状因数的形状因数。
存储器装置1100可以是但不限于闪存装置、NAND闪存装置、相变RAM(PRAM)、铁电RAM(FRAM)、磁RAM(MRAM)等。存储器装置1100可具有平面结构或具有存储器单元的堆叠的三维(3D)存储器单元结构。存储器单元中的每个可包括用于存储相应数据位的层级。存储器装置1100可被实现为例如存储器芯片(例如,NAND芯片)。尽管出于简明的目的,图1中仅示出一个非易失性存储器装置2000,但是存储器系统1000可包括以多种方式布置并且经由多个通道连接到控制器1200的若干非易失性存储器装置(例如,存储器芯片)。
图2是示意性地示出根据实施例的控制器的框图。参照图2,控制器1200可包括系统总线1210、处理器1220、RAM 1230、主机接口1240、存储器接口1250和纠错码(ECC)编码器/解码器1260。
系统总线1210可在控制器1200的组件1220至1260之间提供通道。处理器1220可控制控制器1200的整体操作。RAM 1230可用作工作存储器、高速缓存存储器和缓冲存储器中的至少一个。主机接口1240可经由各种通信标准(诸如,USB(通用串行总线)、MMC(多媒体卡)、PCI(外围组件互连)、PCI-E(PCI-快速)、ATA(高级技术附件)、串行ATA、并行ATA、SCSI(小型计算机小型接口)、ESDI(增强型小型磁盘接口)、IDE(集成驱动电子设备)和火线)中的至少一种与外部装置(例如,主机)进行通信。
存储器接口1250可与非易失性存储器装置(例如,如图1中所示的存储器装置1100)接口连接。存储器接口1250可包括NAND接口或NOR接口。
ECC编码器/解码器1260可对从外部主机接收的数据执行ECC编码,并且对从存储器装置1100接收的数据执行ECC解码。例如,ECC编码器/解码器1260可对接收的输入数据(例如,如图1中所示的DATA)进行编码,以生成编码数据DATA_C。另外,ECC编码器/解码器1260可接收编码数据DATA_C,对编码数据DATA_C进行解码以重构或恢复数据,并且输出重构或恢复后的数据作为如图1中所示的DATA。在实施例中,ECC编码可以是例如极化码编码,并且ECC解码可以是例如极化码解码。
图3是示意性地示出根据实施例的ECC编码器/解码器1260的示例的框图。参照图2和图3,ECC编码器/解码器1260可包括极化码编码器1261和连续消除解码器(successivecancellation decoder)1263中的一个或两者。
极化码编码器1261可接收多个信息字位。例如,可从主机接收信息字位。极化码编码器1261可对信息字位执行极化码编码,以生成与信息字位对应的极化编码值。极化编码值可在存储器装置1100处被编程。在存储器装置1100处编程的数据可被读取为读取的极化编码值。连续消除解码器1263可对读取的极化编码值执行连续消除解码以例如通过重构或恢复从主机接收的信息字位来生成信息字位。
存储器装置1100可被理解为其中由极化码编码器1261编码的极化编码值被传送的通道。在示例实施例中,ECC编码器/解码器1260可包括连续消除解码器1263。连续消除解码器1263可对读取的极化编码值执行连续消除解码,以便生成信息字位。
在实施例中,连续消除解码器1263可包括小数压缩器310和小数解压缩器320中的至少一个。小数压缩器310和小数解压缩器320可用于在连续消除解码期间执行小数压缩处理中的一些或全部(例如,下面描述的处理4000、9100、9200和9300中的一个或多个)。
在实施例中,小数压缩可用于以低的压缩器和解压缩器门数开销来对非双积(dyadic)值的向量进行压缩,从而使压缩对于利用是可行的。在实施例中,双积值可指可被表示为2的幂(a power of 2)的值,并且非双积值可指不可被表示为2的幂的值。换句话说,双积值可指可被表示为2n的值,并且非双积值可指不可被表示为2n的值,其中,n是整数。
在实施例中,小数压缩可对固定数量的输入位进行操作并输出固定数量的输出位,这可被称为固定到固定压缩。固定到固定压缩可允许例如存储器减少和总线变窄中的至少一个。在实施例中,小数压缩器310和小数解压缩器320中的至少一个可在ECC解码(例如,使用极化码的ECC解码)中的连续消除期间使用小数压缩。
在实施例中,小数压缩中使用的码字可以是部分系统的。因此,压缩的位可保持输入值的小数段,输入值的小数段可与完成表示的值的前缀码拼接(concatenate,又称为,连接、级联),并且还可用于唯一解码。小数压缩可使用可用复用器实现的小字典,并且在实施例中,对应的硬件可被调整为在小于单个时钟周期内对数据进行压缩和解压缩。
图4A至图4D是根据实施例的用于构造和使用用于小数压缩的小数压缩器和小数解压缩器的处理4000的框图。为了简明,小数压缩器和小数解压缩器在此可分别被简称为压缩器和解压缩器。在实施例中,关于处理4000描述的压缩器可对应于在此描述的任何压缩器(例如,小数压缩器310、小数压缩器6100、小数压缩器7100和小数压缩器8100)。在实施例中,关于处理4000描述的解压缩器可对应于在此描述的任何解压缩器(例如,小数解压缩器320、小数解压缩器7300和小数解压缩器8300)。
如在此所使用的,上取整函数可指将任何实数x映射到不小于x的最小整数的函数。类似地,下取整函数/>可分派不大于x的最大整数。例如,处理4000的输入可以是取自范围[0,1,…,N-1]的值的二进制向量。输出可以是具有较少位的二进制向量,具有较少位的二进制向量的大小由N和压缩器/解压缩器复杂度确定。在实施例中,值的二进制向量可对应于上面讨论的极化编码值。在一些实施例中,值的二进制向量可对应于在连续消除解码中使用的变量节点向量。
如图4A中所示,处理4000可包括在操作4100确定压缩率。在实施例中,压缩率可以是压缩的数据与未压缩的数据之间的比率,并且可用R表示。可使用下面示出的等式1来计算压缩率:
在上面的等式1中,k表示具有范围[0,1,…,N-1]的值的数量,该值将被包括在每个小数压缩码字中。因此,对于给定的N,可通过选择k来确定压缩率R。在实施例中,可使用下面的等式2来获得k的默认值:
R的上限是通过将多个k值一起放置在码字中然后压缩码字,压缩的码字的二进制表示的长度可通过/>而被获得,并且比率通过而被确定。高k值可不导致更好的压缩,除非差被最小化。高k可增大压缩器和解压缩器的复杂度。因此,在一些实施例中,可使用最低可行的k。
在实施例中,当间隔大小N小时,处理4000可以是有用的。例如,N=5压缩可达到log2 5/3=0.77的压缩率R,这转化为23%的区域节省。作为另一示例,在N=600,比率可达到log2 600/10=0.92,仅8%节省。然而,处理4000的值可与初始存储器或传输大小成比例,例如,20千门(KG)存储器中的23%的有效减少是4.6KG,但是150KG中的8%的较低效率是12KG。
如图4A中进一步所示,处理4000还可包括在操作4200构建可用于构造压缩器和解压缩器的前缀表。图4B示出根据实施例的操作4200的示例。
如图4B中所示,操作4200可包括在操作4210使用例如下面的等式3将N分解为2的幂分量{n1,n2,...,nm},其中,w和j是索引:
根据实施例,在小数压缩期间,可为每个值分配固定数量的位。在实施例中,这个固定数量的位可被称为位数据块(bit chunk,或称为位块、位组块),并且这个位数据块可具有比其表示的未压缩的值更少的位。当在操作4210期间将N分解为2的幂时,可通过幂分量来确定用于值分配的允许的位数据块大小。这样的分解可通过将N写成其基数为2的表示并且将n1,n2,…,nm分派为以基数为2的形式的为1的对应索引(从零开始)而被实现。
如图4B中进一步所示,操作4200还可包括在操作S4220创建mk个字符串的第一列表。给定每个值的m个可行的位大小分配和k个值,存在mk个组合,mk个组合可以是包括在第一列表中的字符串。每个字符串可从{n1,n2,...,nm}中的k个元素{e1,e2,...,ek}的组合被构造,其中,每个元素可被选择多于一次。在实施例中,元素可对应于上面讨论的位数据块。在实施例中,每个字符串的长度可被表示为其中,i是索引。
在处理4000中,由压缩器生成的压缩的码字可以是位长,并且第一列表中的每个组合可包括比/>更少的位。因此,为了确保每个压缩的码字包括适当数量的位,在操作4230中,可将每个串中的备用位(spare bit)聚集在第二列表中。在实施例中,第二列表中的每个串的长度可被表示为/>位。
如图4B中进一步所示,操作4200可包括在操作4240分派前缀码以用于值的位分配的唯一识别。在操作4250,可合并第一列表和第二列表以生成前缀表,前缀表可以是在压缩和解压缩期间使用的转换表。在前缀表中,{e1,e2,...,ek}元素或位数据块的每个组合可与对应的一组前缀位匹配。
再次返回到图4A,处理4000还可包括在操作4300构造和使用压缩器和解压缩器中的一个或多个。图4C和图4D示出根据实施例的操作4300的示例。
如图4C中进一步所示,操作4300可包括为k个值中的每个值分派位数据块。例如,在压缩器,可将每个值与N的分解段进行比较。如果值<则该值可用n1个位表示。例如,如果该值在第一段0,1,…,2n1-1内,则该值可由2n1个位完全表示。
如果1≤j<m,nj+1≠0,则来自/>的偏移可被确定,并且该值可由来自/>的偏移表示。例如,如果该值在2n1,2n1+1,…,2n2之间,则来自2n1-1的偏移可被计算,并且该值可使用n2个位来表示。类似地,在操作4320中,所有k个值被分派{n1,n2,...,nm}中的k个位数据块。注意,nm可以是零,并且在那种情况下,位数据块为空(null)。
如图4C中进一步所示,操作4300可包括在操作4330拼接k个位数据块和从前缀表选择的对应前缀,以生成与k个值对应的压缩的码字。前缀可唯一地标识用于构造压缩的码字的位数据块长度的组合,这可允许解压缩器能够确定多少个位被分派给每个值。在操作4340,可例如由压缩器输出压缩的码字。
如图4D中所示,操作4300可包括在操作4350在解压缩器接收压缩的码字。在操作4360,解压缩器可检测可变长度前缀。例如,解压缩器可检查压缩的码字的最后位,并且可基于压缩的码字的最后位的模式来确定前缀。
如图4D中进一步所示,操作4300可包括在操作4370使用前缀表根据前缀寻找值到位(values-to-bit)分派{e1,e2,...,ek}的组合。在实施例中,操作4370可包括确定包括在压缩的码字中的位数据块的位数据块大小。
如图4D中进一步所示,操作4300还可包括在操作4380使用确定的位数据块大小基于位数据块来确定解压缩的码字。如果前缀指示特定位数据块表示偏移值,则操作4380还可包括基于偏移来计算值。对于大小nj个位的每个偏移值ew,解码值可被表示为如果ew是空,则解码值可被表示为可以是N-1的/>
下面提供处理4000的三个示例作为示例1至示例3。图5A至图5C示出根据实施例的示例前缀表,如下面更详细地讨论的,示例前缀表可对应于示例1至示例3。
在确定存储器节省之后,可在操作4200构造前缀表。以基数为2表示的N=80为1010000。因此,80=26+24,并且每个值可被分派6个位或4个位:{n1=6,n2=4}。在操作4220,可从可行的位分配构建mk=23=8个组合的列表。每个组合是12至18个位,这在操作4230为每个压缩的码字留下1至7个备用位。在操作4240,那些备用位被分派前缀码以用于使用的组合的唯一检测。图5A示出可在操作4250针对示例1构造的完整前缀表的示例。
在操作4300,可构造压缩器和解压缩器。在操作4310,压缩器可接收三个值。然后,在操作4320,对于每个值,如果值低于26=64,则值可由6个位的位数据块充分表示。否则,如果值大于或等于64且小于26+24=80,则值可由4个位的位数据块表示,4个位的位数据块表示来自64的偏移。在操作4330,可将位数据块与前缀位拼接,并且在操作4340,可存储或发送压缩的19位码字。
在操作4350,解压缩器可接收压缩的码字。在操作4360,检测可变长度前缀,并且可从前缀表确定每个值的位数。如果值被分派6个位的位数据块,则位数据块可与作为最高有效位(MSB)的0拼接。如果值被分派4个位的位数据块,则位数据块可与作为MSB的100拼接。解码输出是三个7位显式值。
下面呈现示例1的上下文中的操作4320和4330的示例:
在操作4320,压缩器可接收三个值(例如,value-1、value-2和value-3)。如下表1中所示,每个值可在范围[0,1,2,…,79]中,并且可由7个位表示:
表1
value-1 | value-2 | value-3 |
0…79 | 0…79 | 0…79 |
如果所有值≤63,则如下表2所示,每个值可以以6个位表示,并且附加前缀位可以是0:
表2
value-1 | value-2 | value-3 | 前缀位 |
6个位 | 6个位 | 6个位 | 0 |
否则,如果仅第一值>63并且另外两个值≤63,则第一值可被表示为从64偏移的4个位,并且另外两个值可以以6个位表示。如下表3所示,附加前缀位可以是001:
表3
value-1 | value-2 | value-3 | 前缀位 |
4个位 | 6个位 | 6个位 | 001 |
否则,如果仅第二值>63并且另外两个值≤63,则如下表4所示,可修改上面的前缀:
表4
value-1 | value-2 | value-3 | 前缀位 |
6个位 | 4个位 | 6个位 | 011 |
否则,如果仅第三值>63并且另外两个值≤63,则如下表5所示,可修改上面的前缀:
表5
value-1 | value-2 | value-3 | 前缀位 |
6个位 | 6个位 | 4个位 | 101 |
否则,如果第一值和第二值两者>63并且第三值≤63,则如下表6所示,前两个值可用4个位表示,并且第三值用6个位表示,并且附加前缀位可以是00111:
表6
value-1 | value-2 | value-3 | 前缀位 |
4个位 | 4个位 | 6个位 | 00111 |
否则,如果第一值和第三值>63并且第二值≤63,则如下表7所示,可修改上面的前缀:
表7
value-1 | value-2 | value-3 | 前缀位 |
4个位 | 6个位 | 4个位 | 01111 |
否则,如果第二值和第三值>63并且第一值≤63,则如下表8所示,可修改上面的前缀:
表8
value-1 | value-2 | value-3 | 前缀位 |
6个位 | 4个位 | 4个位 | 10111 |
否则,如果所有值>63,则如下表9所示,所有值可被表示为来自64的4个位偏移,并且附加前缀位可以是0011111:
表9
value-1 | value-2 | value-3 | 前缀位 |
4个位 | 4个位 | 4个位 | 0011111 |
在示例2中,N=17。每个未压缩的值取自[0,1,…,16]并且可被表示为5个位。根据操作4100,k的默认值可被计算为 N的分解为17=24+20,导致m=2。为了减少门数,甚至k可被进一步减小到5,并且压缩率可从0.81略微增大到0.84。
因此,针对25个位的总码字长度,每个未压缩的码字可包括5个值,每个值具有5个位。输出可以是个位的压缩的码字。每个值可被分派4或零(空)个位。组合的数量是/>这也是前缀字符串的数量。图5B示出可在操作4250针对示例2构造的完整前缀表的示例。
在示例3中,N=3。每个未压缩的码字取自[0,1,2],并且可被表示为4个位。根据操作4100,k的默认值可被计算为这导致压缩率R=1(无压缩)。因此,k可被增大至3,这提供压缩率/> 而不是/>的界限。
N的分解为3=21+20,因此m=2。因此,针对6个位的总码字长度,每个未压缩的码字可包括三个值,每个值具有2个位。输出可以是个位的压缩的码字。每个值可被分派一个或零(空)个位。图5C示出可在操作4250针对示例3构造的完整前缀表的示例。
在上面讨论的示例1至示例3中,前缀表中的前缀被示出为被包括在压缩的码字的末尾(例如,作为压缩的码字的最后位)。在实施例中,前缀可被包括在压缩的码字的其他部分中(例如,在压缩的码字的开始处)。
尽管图4A至图4D示出处理4000的示例框,但是在一些实施方式中,处理4000可包括与图4A至图4D中描绘的那些框相比附加的框、更少的框、不同的框、或不同地布置的框。另外地或可选地,图4A至图4D中描绘的两个或更多个框可以以任何次序被布置或组合,或者被并行执行。
图6是根据实施例的小数压缩模块6000的示例的框图。小数压缩器6100可获得多个值,小数压缩器6100可将多个值压缩成压缩的码字。小数压缩器6100可将压缩的码字提供给复用器6210,复用器6210可将压缩的码字分发给第一解码器电路6310至第n解码器电路6330中的一个。在实施例中,可将压缩的码字和前缀中的至少一个提供给字典模块6220,字典模块6220可存储前缀表,前缀表存储由小数压缩器使用的前缀,并且字典模块6220可基于前缀表控制复用器将压缩的码字提供给适当解码器电路。例如,第一解码器电路6310可被配置为接收具有第一前缀的压缩的码字,第二解码器电路6320可被配置为接收具有第二前缀的压缩的码字,并且第n解码器电路6330可被配置为接收具有第n前缀的压缩的码字。
在实施例中,第一解码器电路6310至第n解码器电路6330中的每个可被配置为接收基于编码值生成的压缩的码字,并且直接输出解码值。如上所讨论的,压缩的码字可被认作用于生成压缩的码字的值的紧凑表示。因此,第一解码器电路6310至第n解码器电路6330可被配置为基于值的紧凑表示而不是值本身来执行与例如连续消除解码对应的算术运算。在实施例中,第一解码器电路6310至第n解码器电路6330可使用诸如组合逻辑门的硬件来实现,硬件可被调整为提供适当压缩的码字的解码值。在实施例中,可在小于单个时钟周期内提供解码值。
图7是根据实施例的小数压缩模块7000的示例的框图。小数压缩器7100可获得多个值,小数压缩器7100可将多个值压缩成压缩的码字。小数压缩器7100可将压缩的码字提供给缓冲器7200。在实施例中,缓冲器7200可包括例如触发器(flip-flop)寄存器或嵌入式存储器(诸如,静态随机存取存储器(SRAM))。缓冲器7200可将压缩的码字提供给小数解压缩器7300,以对压缩的码字进行解压缩并提供值。
图8是根据实施例的小数压缩模块8000的示例的框图。小数压缩模块8000可包括连续消除节点8100、连续消除节点8300和连续消除节点8500,连续消除节点8100、连续消除节点8300和连续消除节点8500可被配置为执行用于对诸如极化编码值的值进行解码的连续消除处理的一部分。在实施例中,小数压缩器8200和小数解压缩器8400可用于在连续消除处理期间对使用的值进行压缩。在实施例中,一些连续消除节点(例如,连续消除节点8300)可对压缩的码字进行操作,并且可提供可由另一连续消除节点(例如,连续消除节点8100)使用的输出,或者可由小数解压缩器8400进行解压缩然后提供给另一连续消除节点(例如,连续消除节点8500)的输出。例如,如在图8中可看到的,连续消除节点8300的输出可作为反馈被提供给连续消除节点8100。在实施例中,可使用小数压缩来对作为反馈提供的信息进行压缩。在实施例中,小数压缩模块可根据需要包括任何数量或布置的连续消除节点、以及任何数量或布置的压缩器或解压缩器。
在实施例中,小数压缩模块6000、小数压缩模块7000或小数压缩模块8000中的一些或所有组件可被包括在ECC编码器/解码器1260或连续消除解码器1263中,或者可由ECC编码器/解码器1260或连续消除解码器1263使用或与ECC编码器/解码器1260或连续消除解码器1263结合使用,同时对编码值(例如,极化编码值)进行解码。在实施例中,小数压缩器6100、小数压缩器7100和小数压缩器8200中的一个或多个可对应于在此描述的压缩器和小数压缩器中的任何一个。在实施例中,小数解压缩器7300和小数解压缩器8400中的一个或多个可对应于在此描述的解压缩器和小数解压缩器中的任何一个。
尽管在此通常在ECC解码的背景中描述处理4000和小数压缩,但是实施例不限于此。例如,在涉及不可被表示为2的幂的值的任何情况下,小数压缩可用于减小总线大小或存储器大小。例如,在许多不同的技术背景中可遇到这样的非双积值,许多不同的技术背景包括但不限于用于基于位置的技术(诸如,映射或导航系统)的坐标、由模数转换器生成的音频文件、由图像传感器生成的数字图像、生物医学数据(诸如,心率、呼吸率、氧饱和度水平、糖水平)或由生物医学传感器捕获的任何其他类型的数据,或者根据需要的任何其他背景。例如,处理4000和小数压缩通常在模拟现象被数字地测量或存储的情况下可以是有用的。
在实施例中,在此描述的小数压缩器和解压缩器可使用诸如组合逻辑电路或门的硬件来实现。因此,值的范围可以是固定的,并且硬件可被配置为使用预定的前缀表来执行小数压缩和解压缩。在实施例中,在此描述的小数压缩器和解压缩器可使用软件、固件或可编程电路(诸如,现场可编程门阵列)的任何组合来实现。因此,值的范围可以是可变的,并且各种不同的前缀表可在小数压缩器和解压缩器的操作期间被构造。在实施例中,在此描述的小数压缩器和解压缩器可根据需要使用硬件、软件、固件或可编程电路的任何组合来实现。
图9A是根据实施例的控制存储系统的处理9100的流程图。在一些实施方式中,图9A的一个或多个处理框可由存储器系统1000或在此描述的压缩器和解压缩器中的任何一个执行。
如图9A中所示,处理9100可包括在操作9110从存储设备获得多个编码值。在实施例中,多个编码值中的每个值可具有预定值长度并在预定范围内,并且预定范围可以不是2的幂。在实施例中,存储设备可对应于存储器系统1000或存储器装置1100。
如图9A中进一步所示,处理9100可包括在操作9120将多个编码值分组成码字。
如图9A中进一步所示,处理9100可包括在操作9130获得多个位数据块。在实施例中,多个位数据块中的每个位数据块可表示多个编码值中的对应编码值,并且每个位数据块的长度可从基于预定范围确定的一个或多个预定位数据块长度之中被选择。
如图9A中进一步所示,处理9100可包括在操作9140从多个可变长度前缀之中选择可变长度前缀。在实施例中,可变长度前缀可指示多个位数据块的位数据块长度。
如图9A中进一步所示,处理9100可包括在操作9150获得包括可变长度前缀和多个位数据块的压缩的码字。
如图9A中进一步所示,处理9100可包括在操作9160基于压缩的码字对多个编码值进行解码。
在实施例中,多个编码值可以是第一多个编码值,码字可以是第一码字,多个位数据块可以是第一多个位数据块,可变长度前缀可以是第一可变长度前缀,并且压缩的码字可以是第一压缩的码字,并且处理9100还可包括:从存储设备获得第二多个编码值,其中,第二多个编码值的数量与第一多个编码值的数量相同;将第二多个编码值分组成第二码字,其中,第二码字的长度与第一码字的长度相同;基于第二多个编码值获得第二多个位数据块;基于第二多个位数据块的位数据块长度来选择第二可变长度前缀,其中,第二多个位数据块的位数据块长度与第一多个位数据块的位数据块长度不同,并且其中,第二可变长度前缀的长度与第一可变长度前缀的长度不同;获得包括第二可变长度前缀和第二多个位数据块的第二压缩的码字,其中,第二压缩的码字的长度与第一压缩的码字的长度相同;以及基于第二压缩的码字对第二多个编码值进行解码。
在实施例中,获得多个位数据块可包括:将多个编码值中的编码值与阈值进行比较;基于该值小于阈值,将与编码值对应的位数据块的长度设置为第一位数据块长度,并且基于编码值获得位数据块;基于该值大于或等于阈值,将与编码值对应的位数据块的长度设置为第二位数据块长度;以及基于从编码值减去阈值的结果来获得位数据块。在实施例中,从编码值减去阈值可对应于上面描述的偏移的确定。
在实施例中,第一位数据块长度和第二位数据块长度可小于预定值长度,第一位数据块长度可大于第二位数据块长度,并且阈值、第一位数据块长度和第二位数据块长度基于预定范围而被确定。
在实施例中,第一位数据块长度可对应于第一子范围,第二位数据块长度可对应于第二子范围,预定范围可等于第一子范围和第二子范围的总和,并且第一子范围和第二子范围可以是2的幂。在实施例中,第一子范围和第二子范围可对应于上面描述的范围的2的幂分解。
图9B是根据实施例的控制存储系统的处理9200的流程图。在一些实施方式中,图9B的一个或多个处理框可由存储器系统1000或在此描述的压缩器和解压缩器中的任何一个执行。
在实施例中,处理9200的一个或多个处理框可在处理9100的处理框之后被执行。
如图9B中所示,处理9200可包括在操作9210基于可变长度前缀从多个解码电路之中选择解码电路。在实施例中,多个解码电路可对应于第一解码器电路6310至第n解码器电路6330。
如图9B中进一步所示,处理9200可包括在操作9220将压缩的码字提供给解码电路,并且在操作9230基于多个位数据块从解码电路获得多个解码值。
在实施例中,多个解码电路可被包括在ECC解码器中,多个编码值可使用极化码而被编码,并且解码电路可被配置为使用连续消除解码来对压缩的码字进行解码。在实施例中,ECC解码器可对应于ECC编码器/解码器1260和连续消除解码器1263中的任何一个。
图9C是根据实施例的控制存储装置的处理9300的流程图。在一些实施方式中,图9C的一个或多个处理框可由存储器系统1000或在此描述的压缩器和解压缩器中的任何一个执行。
如图9C中所示,处理9300可包括在操作9305从存储器获得多个值。在实施例中,多个值中的每个值可在范围内,并且该范围可以不是2的幂。在实施例中,存储器可对应于存储器系统1000或存储器装置1100。
如图9C中进一步所示,处理9300可包括在操作9310选择码字长度。在实施例中,可基于范围来选择码字长度。
如图9C中进一步所示,处理9300可包括在操作9320确定位数据块长度的多个组合。在实施例中,多个组合的数量可基于范围的2的幂分量的数量。
如图9C中进一步所示,处理9300可包括在操作9330将多个前缀分派给多个组合。在实施例中,“包括在每个组合中的位数据块长度”与“分派给每个组合的对应前缀的长度”的总和可小于码字长度。
如图9C中进一步所示,处理9300可包括在操作9340将分派的多个前缀存储在表中。在实施例中,表可对应于上面讨论的前缀表。
如图9C中进一步所示,处理9300可包括在操作9350将多个值分组成具有码字长度的码字。
如图9C中进一步所示,处理9300可包括在操作9360获得多个位数据块。在实施例中,多个位数据块中的每个位数据块可表示多个值中的对应值,并且每个位数据块的长度可从位数据块长度之中被选择。
如图9C中进一步所示,处理9300可包括在操作9370基于表来选择与多个位数据块对应的前缀。
如图9C中进一步所示,处理9300可包括在操作9380获得包括前缀和多个位数据块的压缩的码字。
如图9C中进一步所示,处理9300可包括在操作9390将压缩的码字存储在缓冲器中。在实施例中,缓冲器可对应于上面讨论的缓冲器7200。
在实施例中,多个值可以是第一多个值,码字可以是第一码字,多个位数据块可以是第一多个位数据块,前缀可以是第一前缀,并且压缩的码字可以是第一压缩的码字,并且处理9300还可包括:从存储器获得第二多个值,其中,第二多个值的数量与第一多个值的数量相同;将第二多个值分组成具有码字长度的第二码字;基于第二多个值来获得第二多个位数据块;基于第二多个位数据块的位数据块长度来选择第二前缀,其中,第二多个位数据块的位数据块长度与第一多个位数据块的位数据块长度不同,并且其中,第二前缀的长度与第一前缀的长度不同;获得包括第二前缀和第二多个位数据块的第二压缩的码字,其中,第二压缩的码字的长度与第一压缩的码字的长度相同;以及基于第二压缩的码字对第二多个值进行解码。
在实施例中,获得多个位数据块可包括:将多个值中的第一值与阈值进行比较;基于第一值小于阈值,将与第一值对应的第一位数据块的长度设置为第一位数据块长度,并且基于该值获得第一位数据块;将所述多个值中的第二值与阈值进行比较;以及基于第二值大于或等于阈值,将与该值对应的第二位数据块的长度设置为第二位数据块长度,并且基于从该值减去阈值的结果来获得第二位数据块。
在实施例中,处理9300还可包括:从缓冲器获得压缩的码字;从压缩的码字提取前缀;基于前缀和表来确定第一位数据块长度和第二位数据块长度;基于第一位数据块获得第一值;以及通过将阈值与第二位数据块相加来获得第二值。
尽管图9A至图9C示出处理9100至9300的示例框,但是在一些实施方式中,处理9100至处理9300可包括与图9A至图9C中描绘的那些框相比更多的框、更少的框、不同的框、或不同地布置的框。另外地或可选地,处理9100至处理9300的框中的两个或更多个框可以以任何次序被布置或组合,或者被并行执行。
图10是示出根据实施例的存储器和总线节省的图表。图10示出存储器/总线节省的百分比与每个值的未压缩分派的位的数量对比的示例。在默认k的情况下,针对各种N计算节省。在实施例中,节省可随着k的更高值而提高。在默认k的情况下,节省的范围从5%至23%。
在实施例中,压缩器/解压缩器可使用仅包括组合逻辑的超大规模集成(VLSI)设计来实现,并且可在例如单个周期内处理小数压缩或小数解压缩。
以门数表示的算法复杂度可与每个处理单元的值的数量—k以及N分解中的元素的数量—m成比例。为了评估门数,前缀码大小mk可用作关系区域估计器。
作为示例,与实施例一致的压缩器/解压缩器分别针对N=80、17、3和k=3、5、5来实现。以Verilog硬件描述语言(HDL)对28nm三星工艺执行设计,并且用Synopsis设计编译器对28nm三星工艺进行综合。结果报告于下面的表10中:
表10
为具有k个值输入/输出的单个压缩器/解压缩器提供数据。注意,如果针对(每个周期读取更多数量的值的)更高带宽需要存储器,则压缩器/解压缩器逻辑单元可根据需要被复制并且并行操作。
与上面讨论的本公开的实施例相比,由于相关技术压缩方法(如枚举编码、Huffman、Tunstall或算术编码)减小平均码字大小,因此,相关技术压缩方法(如枚举编码、Huffman、Tunstall或算术编码)不可保证存储器大小的减小,但是在最坏情况下,所有位的数据模式被利用。此外,由于每个压缩器/解压缩器的较大的前缀大小,因此它们消耗更大量的硬件。
图11是根据实施例的包括存储器系统的计算机系统11000的框图。计算机系统11000(诸如,移动装置、台式计算机和服务器)可采用根据实施例的存储器系统11400。
计算机系统11000可包括中央处理器11100、RAM 11200、用户接口11300和存储器系统11400,中央处理器11100、RAM 11200、用户接口11300和存储器系统11400电连接到总线11500。如上所述的主机可包括计算机系统11000中的中央处理器11100、RAM 11200和用户接口11300。中央处理器11100可控制整个计算机系统11000,并且可执行与经由用户接口11300输入的用户命令对应的计算。RAM 11200可用作中央处理器11100的数据存储器,并且中央处理器11100可向存储器系统11400写入数据/从存储器系统11400读取数据。
如在上面描述的示例实施例中,存储器系统11400可包括存储器控制器11410和存储器装置11420。存储器控制器11410可包括编码器和解码器,并且存储器装置11420可包括包含多个存储器单元的单元阵列。
根据实施例,存储器控制器11410可由上面参照图1讨论的控制器1200实现,并且存储器装置11420可由上面参照图1讨论的存储器装置1100实现。
图12是示出根据实施例的存储卡12000的框图。根据上面参照图1讨论的示例实施例的存储器系统1000可以是存储卡12000。例如,存储卡12000可包括嵌入式多媒体卡(eMMC)或安全数字(SD)卡。如图12中所示,存储卡12000可包括存储器控制器12100、非易失性存储器12200和端口区域12300。存储器控制器12100可由上面参照图1讨论的控制器1200实现,图12中示出的非易失性存储器12200可由上面参照图1讨论的存储器装置1100实现。
存储器控制器12100可包括编码器和解码器。编码器和解码器可执行根据实施例的编码方法和解码方法。存储器控制器12100可遵循预设协议经由端口区域12300与外部主机进行通信。协议可以是eMMC协议、SD协议、SATA协议、SAS协议或USB协议。非易失性存储器12200可包括即使供应到其的电力被阻断也保持存储在其中的数据的存储器单元。例如,非易失性存储器12200可包括闪存、磁随机存取存储器(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)或相变存储器(PCM)。
根据实施例,存储器控制器12100和非易失性存储器12200可分别由上面参照图1讨论的控制器1200和存储器装置1100来实现。
图13是根据实施例的包括存储器系统的网络系统13000的框图。如图13中所示,网络系统13000可包括服务器系统13100以及经由网络13200连接的多个终端13300、13400和13500(即,终端1 13300、终端2 13400和终端n 13500)。服务器系统13100可包括服务器13110和SSD 13120,服务器13110用于处理从连接到网络13200的多个终端13300、13400和13500接收的请求,SSD 13120用于存储与从终端13300、13400和13500接收的请求对应的数据。这里,SSD 13120可以是根据实施例的存储器系统。
根据实施例,SSD 13120可由上面参照图1讨论的存储器系统1000实现。
同时,根据实施例的存储器系统可经由各种封装中的任何一个安装。例如,根据实施例的存储器系统可经由包括以下项的封装中的任何一个安装:层叠封装(PoP)、球栅阵列(BGA)、芯片级封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、华夫裸片封装(die in waffle pack)、晶片形式的裸片(die in wafer form)、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料公制四面扁平封装(MQFP)、薄型四面扁平封装(TQFP)、小外形集成电路(SOIC)、收缩型小外形封装(SSOP)、薄型小外形封装(TSOP)、系统级封装(SIP)、多芯片封装(MCP)、晶片级制造封装(WFP)、晶片级处理堆叠封装(WSP)等。
如本领域中传统的,在附图中以功能块、单元和/或模块的形式描述和示出实施例。本领域技术人员将理解,通过可使用基于半导体的制造技术或其他制造技术而形成的电子(或光学)电路(诸如,逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等)物理地实现这些块、单元和/或模块。在通过微处理器或类似物实现块、单元和/或模块的情况下,可使用软件(例如,微代码)对块、单元和/或模块进行编程以执行在此讨论的各种功能,并且可通过固件和/软件可选择地驱动块、单元和/或模块。可选地,每个块、单元和/或模块可通过专用硬件来实现,或者可被实现为执行一些功能的专用硬件与执行其他功能的处理器(例如,一个或多个编程的微处理器和相关联的电路系统)的组合。此外,在不脱离本范围的情况下,实施例的每个块、单元和/或模块可被物理地分为两个或更多个交互和分立的块、单元和/或模块。此外,在不脱离本范围的情况下,实施例的块、单元和/或模块可被物理地组合为更复杂的块、单元和/或模块。
上面描述的方法的各种操作可由能够执行操作的任何合适的装置(诸如,各种硬件和/或一个或多个软件组件、电路和/或一个或多个模块)来执行。
软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”来实现,以被指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)使用或者结合指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)来使用。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以硬件、以由处理器执行的软件模块、或以两者的组合来实现。如果以软件来实现,则功能可作为一个或多个指令或代码被存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质发送。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其他形式的存储介质中。
前述是对实施例的说明,并且不应被解释为对其进行限制。尽管已经描述了一些实施例,但是本领域技术人员将容易理解,在实质上不脱离本范围的情况下,许多修改在实施例中是可行的。
Claims (20)
1.一种存储系统,包括:
存储装置,被配置为:存储多个编码值,其中,所述多个编码值中的每个编码值具有预定值长度并且在预定范围内,并且其中,所述预定范围的上限不是2的幂;以及
至少一个处理器,被配置为:
将所述多个编码值分组成码字;
获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个编码值中的对应编码值,并且其中,每个位数据块的长度从基于所述预定范围确定的一个或多个预定位数据块长度之中被选择;
从多个可变长度前缀之中选择可变长度前缀,其中,可变长度前缀指示所述多个位数据块的位数据块长度;
获得包括可变长度前缀和所述多个位数据块的压缩的码字;并且
基于压缩的码字,对所述多个编码值进行解码。
2.根据权利要求1所述的存储系统,其中,在所述解码期间,所述至少一个处理器还被配置为:
基于可变长度前缀,从多个解码电路之中选择解码电路;
将压缩的码字提供给解码电路;并且
基于所述多个位数据块,从解码电路获得多个解码值。
3.根据权利要求2所述的存储系统,还包括:纠错码解码器,包括所述多个解码电路,
其中,所述多个编码值使用极化码而被编码,并且
其中,解码电路被配置为使用连续消除解码来对压缩的码字进行解码。
4.根据权利要求1所述的存储系统,其中,所述多个编码值是第一多个编码值,分组的码字是第一码字,所述多个位数据块是第一多个位数据块,可变长度前缀是第一可变长度前缀,并且压缩的码字是第一压缩的码字,
其中,存储装置还被配置为存储第二多个编码值,并且
其中,所述至少一个处理器还被配置为:
获得第二多个编码值,其中,第二多个编码值的数量与第一多个编码值的数量相同;
将第二多个编码值分组成第二码字,其中,第二码字的长度与第一码字的长度相同;
基于第二多个编码值,获得第二多个位数据块;
基于第二多个位数据块的位数据块长度,选择第二可变长度前缀,其中,第二多个位数据块的位数据块长度与第一多个位数据块的位数据块长度不同,并且其中,第二可变长度前缀的长度与第一可变长度前缀的长度不同;
获得包括第二可变长度前缀和第二多个位数据块的第二压缩的码字,其中,第二压缩的码字的长度与第一压缩的码字的长度相同;并且
基于第二压缩的码字,对第二多个编码值进行解码。
5.根据权利要求1所述的存储系统,其中,在获得所述多个位数据块期间,所述至少一个处理器还被配置为:
将所述多个编码值中的编码值与阈值进行比较;
基于所述编码值小于所述阈值,将与所述编码值对应的位数据块的长度设置为第一位数据块长度,并且基于所述编码值获得位数据块;并且
基于所述编码值大于或等于所述阈值,将与所述编码值对应的位数据块的长度设置为第二位数据块长度,并且基于从所述编码值减去所述阈值的结果来获得位数据块。
6.根据权利要求5所述的存储系统,其中,第一位数据块长度和第二位数据块长度小于所述预定值长度,
其中,第一位数据块长度大于第二位数据块长度,并且
其中,所述阈值、第一位数据块长度和第二位数据块长度基于所述预定范围而被确定。
7.根据权利要求5所述的存储系统,其中,第一位数据块长度对应于第一子范围,
其中,第二位数据块长度对应于第二子范围,
其中,所述预定范围等于第一子范围与第二子范围的总和,并且
其中,第一子范围和第二子范围是2的幂。
9.一种存储装置,包括:
存储器,被配置为:存储多个值,其中,所述多个值中的每个值在范围内,并且其中,所述范围的上限不是2的幂;
缓冲器;以及
至少一个处理器,被配置为:
选择码字长度,其中,所述码字长度基于所述范围而被选择;
确定位数据块长度的多个组合,其中,所述多个组合的数量基于所述范围的2的幂分量的数量;
将多个前缀分派给所述多个组合,其中,针对每个组合,包括在每个组合中的位数据块长度与分派给每个组合的对应前缀的长度的总和小于所述码字长度;
将分派的所述多个前缀存储在表中;
将所述多个值分组成具有所述码字长度的码字;
获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个值中的对应值,并且其中,每个位数据块的长度从位数据块长度之中被选择;
基于所述表,选择与所述多个位数据块对应的前缀;
获得包括所述前缀和所述多个位数据块的压缩的码字;并且
将压缩的码字存储在缓冲器中。
10.根据权利要求9所述的存储装置,其中,所述多个值是第一多个值,分组的码字是第一码字,所述多个位数据块是第一多个位数据块,所述前缀是第一前缀,并且压缩的码字是第一压缩的码字,
其中,存储器还被配置为存储第二多个值,并且
其中,所述至少一个处理器还被配置为:
获得第二多个值,其中,第二多个值的数量与第一多个值的数量相同;
将第二多个值分组成具有所述码字长度的第二码字;
基于第二多个值,获得第二多个位数据块;
基于第二多个位数据块的位数据块长度,选择第二前缀,其中,第二多个位数据块的位数据块长度与第一多个位数据块的位数据块长度不同,并且其中,第二前缀的长度与第一前缀的长度不同;
获得包括第二前缀和第二多个位数据块的第二压缩的码字,其中,第二压缩的码字的长度与第一压缩的码字的长度相同;并且
基于第二压缩的码字,对第二多个值进行解码。
11.根据权利要求9所述的存储装置,其中,在获得所述多个位数据块期间,所述至少一个处理器还被配置为:
将所述多个值中的第一值与阈值进行比较;
基于第一值小于所述阈值,将与第一值对应的第一位数据块的长度设置为第一位数据块长度,并且基于第一值获得第一位数据块;
将所述多个值中的第二值与所述阈值进行比较;并且
基于第二值大于或等于所述阈值,将与第二值对应的第二位数据块的长度设置为第二位数据块长度,并且基于从第二值减去所述阈值的结果来获得第二位数据块。
12.根据权利要求11所述的存储装置,其中,所述至少一个处理器还被配置为:
从缓冲器获得压缩的码字;
从压缩的码字提取所述前缀;
基于所述前缀和所述表,确定第一位数据块长度和第二位数据块长度;
基于第一位数据块获得第一值;并且
通过将所述阈值与第二位数据块相加来获得第二值。
13.一种控制存储系统的方法,所述方法通过至少一个处理器来执行并且包括:
从存储设备获得多个编码值,其中,所述多个编码值中的每个编码值具有预定值长度并且在预定范围内,并且其中,所述预定范围的上限不是2的幂;
将所述多个编码值分组成码字;
获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个编码值中的对应编码值,并且其中,每个位数据块的长度从基于所述预定范围确定的一个或多个预定位数据块长度之中被选择;
从多个可变长度前缀之中选择可变长度前缀,其中,可变长度前缀指示所述多个位数据块的位数据块长度;
获得包括可变长度前缀和所述多个位数据块的压缩的码字;以及
基于压缩的码字,对所述多个编码值进行解码。
14.根据权利要求13所述的方法,其中,解码的步骤包括:
基于可变长度前缀,从多个解码电路之中选择解码电路;
将压缩的码字提供给解码电路;以及
基于所述多个位数据块,从解码电路获得多个解码值。
15.根据权利要求14所述的方法,其中,所述多个解码电路被包括在纠错码解码器中,
其中,所述多个编码值使用极化码而被编码,并且
其中,解码电路被配置为使用连续消除解码来对压缩的码字进行解码。
16.根据权利要求13所述的方法,其中,所述多个编码值是第一多个编码值,分组的码字是第一码字,所述多个位数据块是第一多个位数据块,可变长度前缀是第一可变长度前缀,并且压缩的码字是第一压缩的码字,并且
其中,所述方法还包括:
从存储设备获得第二多个编码值,其中,第二多个编码值的数量与第一多个编码值的数量相同;
将第二多个编码值分组成第二码字,其中,第二码字的长度与第一码字的长度相同;
基于第二多个编码值,获得第二多个位数据块;
基于第二多个位数据块的位数据块长度,选择第二可变长度前缀,其中,第二多个位数据块的位数据块长度与第一多个位数据块的位数据块长度不同,并且其中,第二可变长度前缀的长度与第一可变长度前缀的长度不同;
获得包括第二可变长度前缀和第二多个位数据块的第二压缩的码字,其中,第二压缩的码字的长度与第一压缩的码字的长度相同;以及
基于第二压缩的码字,对第二多个编码值进行解码。
17.根据权利要求13所述的方法,其中,获得所述多个位数据块的步骤包括:
将所述多个编码值中的编码值与阈值进行比较;
基于所述编码值小于所述阈值,将与所述编码值对应的位数据块的长度设置为第一位数据块长度,并且基于所述编码值获得位数据块;以及
基于所述编码值大于或等于所述阈值,将与所述编码值对应的位数据块的长度设置为第二位数据块长度,并且基于从所述编码值减去所述阈值的结果来获得位数据块。
18.根据权利要求17所述的方法,其中,第一位数据块长度和第二位数据块长度小于所述预定值长度,
其中,第一位数据块长度大于第二位数据块长度,并且
其中,所述阈值、第一位数据块长度和第二位数据块长度基于所述预定范围而被确定。
19.根据权利要求17所述的方法,其中,第一位数据块长度对应于第一子范围,
其中,第二位数据块长度对应于第二子范围,
其中,所述预定范围等于第一子范围与第二子范围的总和,并且
其中,第一子范围和第二子范围是2的幂。
20.一种控制存储装置的方法,所述方法包括:
从存储器获得多个值,其中,所述多个值中的每个值在范围内,并且其中,所述范围的上限不是2的幂;
选择码字长度,其中,所述码字长度基于所述范围而被选择;
确定位数据块长度的多个组合,其中,所述多个组合的数量基于所述范围的2的幂分量的数量;
将多个前缀分派给所述多个组合,其中,针对每个组合,包括在每个组合中的位数据块长度与分派给每个组合的对应前缀的长度的总和小于所述码字长度;
将分派的所述多个前缀存储在表中;
将所述多个值分组成具有所述码字长度的码字;
获得多个位数据块,其中,所述多个位数据块中的每个位数据块表示所述多个值中的对应值,并且其中,每个位数据块的长度从位数据块长度之中被选择;
基于所述表,选择与所述多个位数据块对应的前缀;
获得包括所述前缀和所述多个位数据块的压缩的码字;以及
将压缩的码字存储在缓冲器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/551,780 | 2021-12-15 | ||
US17/551,780 US11855772B2 (en) | 2021-12-15 | 2021-12-15 | High throughput polar ECC decoding via compressed successive cancellation algorithm |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116263749A true CN116263749A (zh) | 2023-06-16 |
Family
ID=86722821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211393512.XA Pending CN116263749A (zh) | 2021-12-15 | 2022-11-08 | 存储系统和控制其的方法以及存储装置和控制其的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11855772B2 (zh) |
KR (1) | KR20230091001A (zh) |
CN (1) | CN116263749A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100612829B1 (ko) * | 2001-07-07 | 2006-08-18 | 삼성전자주식회사 | 그래픽 애니메이션 데이터의 키 부호화 장치와 그 방법 |
US10985779B2 (en) * | 2018-08-27 | 2021-04-20 | Polaran Haberlesme Teknolojileri Anonim Sirketi | Method and system for decoding data using compressed channel output information |
-
2021
- 2021-12-15 US US17/551,780 patent/US11855772B2/en active Active
-
2022
- 2022-10-27 KR KR1020220140498A patent/KR20230091001A/ko unknown
- 2022-11-08 CN CN202211393512.XA patent/CN116263749A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230308208A1 (en) | 2023-09-28 |
US11855772B2 (en) | 2023-12-26 |
KR20230091001A (ko) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8949687B2 (en) | Memory device and memory system | |
US9158617B2 (en) | Method of performing write operation or read operation in memory system and system thereof | |
US10892776B1 (en) | Memory controller and method of accessing flash memory | |
KR20150106270A (ko) | 폴라 부호의 리스트 복호 방법 및 이를 적용한 메모리 시스템 | |
US20150293811A1 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US8463985B2 (en) | Constrained coding to reduce floating gate coupling in non-volatile memories | |
US9281839B2 (en) | Hard-decision decoding method and low-density parity-check decoder using same | |
US10275186B2 (en) | System and method of data compression and data shaping | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN111563004A (zh) | 存储器控制器 | |
US20190280715A1 (en) | Compressing error vectors for decoding logic to store compressed in a decoder memory used by the decoding logic | |
KR102628009B1 (ko) | 부분 페이지 압축을 위한 메모리 시스템 | |
US10911064B1 (en) | Symbol pair encoding for data compression | |
CN108268338B (zh) | 逐渐缩减大小的可变节点存储器 | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
CN111869111B (zh) | 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 | |
US20190036548A1 (en) | Permutation network designing method, and permutation circuit of qc-ldpc decoder | |
CN107402725B (zh) | 非易失性存储装置及其数据去重复方法 | |
TWI718060B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
KR20220072398A (ko) | 메모리 장치 및 메모리 시스템 | |
CN116263749A (zh) | 存储系统和控制其的方法以及存储装置和控制其的方法 | |
KR102668208B1 (ko) | Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템 | |
CN105938728B (zh) | 用于近似平衡码的编码器和解码器设计 | |
US12009840B2 (en) | Systems and methods of decoding error correction code of a memory device with dynamic bit error estimation | |
TWI831333B (zh) | 記憶體控制器及快閃記憶體的存取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |