CN112133358A - 服务质量(qos)感知数据存储解码器 - Google Patents
服务质量(qos)感知数据存储解码器 Download PDFInfo
- Publication number
- CN112133358A CN112133358A CN201910866126.XA CN201910866126A CN112133358A CN 112133358 A CN112133358 A CN 112133358A CN 201910866126 A CN201910866126 A CN 201910866126A CN 112133358 A CN112133358 A CN 112133358A
- Authority
- CN
- China
- Prior art keywords
- delay
- decoding
- decoder
- qos
- data read
- 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.)
- Granted
Links
- 238000013500 data storage Methods 0.000 title abstract description 8
- 238000005259 measurement Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 34
- 239000013598 vector Substances 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 16
- 238000012937 correction Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 9
- 230000001934 delay Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001788 irregular Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- 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
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- 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
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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/01—Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开描述了与用于数据存储的QoS感知解码器架构相关的技术。在示例中,QoS规范包括指示用于完成数据读取命令的处理的可接受延迟的QOS延迟规范。解码器可以存储该QOS延迟规范。在操作中,解码器生成指示处理的实际延迟的延迟测量。如果延迟测量和QOS延迟规范的比较指示QOS延迟规范的违规,则解码器可终止解码并生成解码失败。
Description
相关申请的交叉引用
本申请要求于2019年6月24日提交的申请号为16/450,722的美国专利申请的优先权,其通过引用并入本文。
技术领域
本公开涉及一种与用于数据存储的QoS感知解码器架构相关的技术,且更特别地涉及一种计算机实现的方法、计算机***以及存储指令的非暂时性计算机可读存储介质。
背景技术
根据一组规范来制造固态驱动器(SSD)。如果有该组规范的任何违规,则可以认为SSD已达到其寿命终止(EOL)并应当被更换。在企业SSD中,服务质量(QoS)被视为EOL限制因素。当企业SSD接近其EOL时,第一次违规可被视作为QoS违规。QoS规范可以由待完成并返回到主机的不同百分比的读取/写入命令的最大延迟来定义。低9的规范,例如90%、99%、99.9%等通常被称为低9QoS规范。低9延迟通常由解码器延迟主导。SSD中的匹配-选择-连接器(mactors)可能导致整体延迟,例如NAND读取时间、命令冲突、错误校正码(ECC)解码延迟变化等。
发明内容
描述了一种与用于数据存储的QoS感知解码器架构相关的技术。在示例中,ECC解码器在时间窗口期间接收数据读取命令。数据读取命令与存储在存储器中的码字相关联。ECC解码器基于ECC进程开始对码字的解码。ECC解码器测量与解码相关联的延迟,并基于延迟保持时间窗口的延迟测量。ECC解码器比较延迟测量和服务质量(QoS)延迟规范,并基于比较终止解码。
在示例中,延迟测量包括时间窗口上的延迟分布。延迟分布包括与第一延迟间隔内由ECC解码器处理的第一数据读取命令相关联的第一标准化计数值。延迟分布进一步包括与第二延迟间隔内由ECC解码器处理的第二数据读取命令相关联的第二标准化计数值。ECC解码器至少通过以下步骤生成延迟分布:确定与响应于数据读取命令的解码相关联的延迟落在第一延迟间隔内,基于延迟落在第一延迟间隔内的确定来递增与第一延迟间隔相关联的第一计数值,生成第一计数值和与第二延迟间隔相关联的至少第二计数值的总和,并基于第一计数和总和生成第一标准化计数值。在又一示例中,在该时间窗口中接收第一数据读取命令的部分,并且其中在先前时间窗口中接收第一数据读取命令的剩余部分。
在示例中,比较延迟测量和QOS延迟规范指示QOS延迟规范的违规。基于违规终止解码。延迟测量包括与在延迟间隔内由ECC解码器处理的数据读取命令相关联的标准化计数值。QOS延迟规范包括与完成在延迟间隔内的数据读取命令的处理相关联的概率。由ECC解码器至少通过确定标准化计数值超过概率来确定违规。
在示例中,ECC解码器进一步检测从时间窗口移位到第二时间窗口的触发事件。ECC解码器基于触发事件访问第二时间窗口的第二延迟测量。ECC解码器基于第二延迟测量来更新延迟测量。第二延迟测量包括第二延迟分布。ECC解码器还在更新延迟测量之后初始化第二时间窗口的第二延迟测量。在又一示例中,检测触发事件包括确定解码码字的数量已达到阈值,并基于解码码字的数量已达到阈值的确定而将时间窗口移位到第二时间窗口。
在示例中,ECC解码器是还包括存储器的计算机***的计算组件。ECC解码器被配置为执行上文描述的操作。从主机接收数据读取命令。ECC解码器进一步被配置为基于解码的终止向主机发送解码失败的指示。QOS延迟规范包括完成在延迟间隔内的数据读取命令的处理的概率。ECC解码器进一步还被配置为将概率存储在第一向量中并且将延迟间隔存储在第二向量中。第一向量存储在寄存器中,该寄存器由ECC解码器的固件可配置。延迟测量包括与在延迟间隔内由ECC解码器处理的数据读取命令相关联的标准化计数值。ECC解码器进一步被配置为将标准化计数值存储在第三向量中。比较延迟测量和QOS延迟规范包括比较第一向量和第三向量。基于第一向量和第三向量的比较来终止解码,其中第一向量和第三向量的比较指示QOS延迟规范的违规。
提及这些说明性示例不是为了限制或限定本公开,而是提供示例以帮助理解本公开。在具体实施方式中讨论了附加实施例和示例,并且在其中提供了进一步的描述。
附图说明
通过参照下面的附图,可以实现对各个实施例的性质和优点的理解。
图1示出根据本公开的某些实施例的错误校正***的高级框图的示例。
图2示出根据本公开的某些实施例的企业计算机***的示例架构。
图3示出根据本公开的某些实施例的延迟测量的示例。
图4示出根据本公开的某些实施例的基于时间窗口更新延迟测量的示例。
图5示出根据本公开的某些实施例的解码***的示例示图。
图6示出根据本公开的某些实施例的由QoS感知ECC解码器对码字解码的示例流程。
图7示出根据本公开的某些实施例的生成延迟测量和确定QoS违规的示例流程。
图8示出根据本公开的某些实施例的基于时间窗口更新延迟测量的示例流程。
图9是能够实现本公开的计算机***的代表。
具体实施方式
描述了与用于数据存储的QoS感知解码器架构相关的技术。在示例中,诸如SSD的数据存储装置包括存储数据的某些类型的存储器(例如,使用NAND的存储器)和用于从存储器读取数据的解码器。数据利用错误校正码(ECC)被保护,并作为码字存储在存储器中。解码器可以包括ECC解码器,其对码字进行解码以输出读取数据。ECC解码器可以集成与QoS相关的一组规范(本文中称为QoS规范),使得根据该组规范执行解码。
特别地,QoS规范包括QOS延迟规范,其指示在某个时间延迟内处理完成数据读取命令的可接受量(例如,待完成并返回到主机的数据读取命令的百分比)。ECC解码器可以存储这种QOS延迟规范。在操作中,ECC解码器生成延迟测量,其指示处理完成的实际延迟。如果延迟测量和QOS延迟规范的比较指示QOS延迟规范的违规,则ECC解码器可以终止解码并生成解码失败。
在图示中,企业存储装置使用多个SSD。主机将数据存储在SSD中以用于用户。在接收到用户对数据的请求时,主机向SSD发送数据读取命令。每个这样的SSD包括QoS感知ECC解码器。反过来,每个QoS感知ECC解码器将QOS延迟规范存储为完成在一组时间延迟“T”内的处理的一组概率“P”。例如,这两组可以存储为由每个QoS感知ECC解码器的固件可配置的两个向量。反过来,在接收到数据读取命令时,SSD的QoS感知ECC解码器开始ECC解码进程,例如使用低密度奇偶校验(LDPC)的解码进程或者根据用于首先保护数据的ECC的任何其他类型的ECC解码进程。QoS感知ECC解码器确保满足QOS延迟规范。更具体地,QoS感知ECC解码器保持一组计数值“C”以记录在某个时间窗口(例如,五秒窗口)内解码的码字的数量。QoS感知ECC解码器还根据计数值的总和生成一组标准化计数值“Q”。通过将一组标准化计数值“Q”与一组概率“P”进行比较,QoS感知ECC解码器可以确定是否可能有QOS延迟规范的违规。例如,当任何标准化计数值超过相应概率一定余量时,确定潜在违规。在这种情况下,QoS感知ECC解码器终止ECC解码进程并向主机发送关于解码失败的通知。
本公开的实施例提供与计算机存储装置有关的若干优点。例如,可以满足QOS延迟规范,从而扩展SSD的EOL或确保满足寿命规范。在另一示例中,可以立即将解码失败发送到主机,从而避免不必要的额外解码迭代,这反过来减少了处理延迟(例如,如果提前终止,则在声明解码失败之前不使用额外的处理时间)并且改进处理资源的总体使用(例如,通过避免不必要的额外解码迭代,可以释放QoS感知ECC解码器以响应其他数据读取命令,并且改进QoS感知ECC解码器对电力的总体消耗)。
为了清楚地解释,结合LDPC解码和企业SSD描述本公开的实施例。然而,实施例不限于此并且适用于任何其他解码进程和任何其他类型的存储装置。为简洁起见,除非上下文另有说明,否则QoS感知ECC解码器在本文中称为解码器。
图1示出根据本公开的某些实施例的错误校正***100的高级框图的示例。在示例中,结合数据存储装置描述了LDPC码。然而,本公开的实施例不限于此。相反,实施例类似地适用于LDPC码的其他用途,包括例如数据传输。
LDPC码是通过由0和1组成的稀疏奇偶校验矩阵H定义的线性块码。此处使用的术语“稀疏矩阵”是指每列及每行中非零值的数量远小于其维数的矩阵。本文所使用的术语“列权重”是指奇偶校验矩阵H的特定列中非零值的数量。本文所使用的术语“行权重”是指奇偶校验矩阵H的特定行中非零值的数量。通常,如果对应于LDPC码的奇偶校验矩阵中的所有列的列权重相似,则该码被称为“规则”LDPC码。另一方面,如果至少一个列权重与其他列权重不同,则LDPC码称为“不规则”LDPC码。通常,不规则LDPC码比规则LDPC码提供更好的错误校正能力。
还根据LDPC码的构造方式描述LDPC码。可以是随机计算机搜索或代数构造。随机计算机搜索构造描述了一种具有由随机的基于计算机的程序设计的奇偶校验矩阵的LDPC码。代数构造意味着已基于组合方法构造奇偶校验矩阵。准循环LDPC(QC-LDPC)码落入后一种构造方法。QC-LDPC码的一个优点是,它们在编码进程方面相对容易实现。QC-LDPC码的主要特征是奇偶校验矩阵由循环子矩阵组成,循环子矩阵可以基于单位矩阵或者基于更小的随机矩阵。还可以使用置换向量来创建循环子矩阵。
如图所示,LDPC编码器110接收包括期望被存储在存储***120中的数据的信息位。经LDPC编码的数据由LDPC编码器110输出并被写入至存储***120。
在各个实施例中,存储***120可以包括各种存储装置类型或介质,诸如(例如,固态、磁性)盘驱动器存储装置、闪存等。在一些实施例中,在收发器中而不是在向或从存储装置写入或读取时采用这些技术,该数据通过有线和/或无线通道被发送和接收。在这种情况下,在传输码字期间,接收的码字中的错误可能被引进。
当(例如,由应用程序或存储数据的用户)请求或以其它方式期望所存储的数据时,检测器130从存储***120接收数据。接收的数据可能包括一些噪声或错误。检测器130对接收的数据执行检测,并输出判定和/或可靠性信息。例如,软输出检测器针对每一个被检测的位输出可靠性信息和判定。另一方面,硬输出检测器输出针对每个位的判定,而不提供相应可靠性信息。作为示例,硬输出检测器可以输出特定位是“1”或“0”的判定,而不指示检测器在该判定中有多确定或确信。相反,软输出检测器输出判定和与判定相关联的可靠性信息。通常,可靠性值指示检测器在给定判定中的有多确定。在一个示例中,软输出检测器输出对数似然比(LLR),其中符号指示判定(例如,正值对应于判定“1”且负值对应于判定“0”),并且量值指示检测器在该判定中有多确信或确定(例如,大的量值指示高的可靠性或确定性)。
判定和/或可靠性信息被传递到LDPC解码器140(例如,如本公开所述的QoS感知ECC解码器),LDPC解码器140使用判定和可靠性信息执行LDPC解码。软输入解码器利用判定和可靠性信息二者对码字进行解码。硬解码器在解码器中仅利用判定值对码字进行解码。由LDPC解码器140生成的解码位被传递至适当的实体(例如,请求其的应用程序或用户)。通过适当的编码和解码,信息位与解码位匹配。
在各个实施例中,可使用包括如下的各种技术来实施所示***:专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,高级RISC机器(ARM)内核)。
LDPC码通常用二分图表示。一组节点、变量或位节点对应于码字的元素,并且另一组节点,例如校验节点对应于码字满足的一组奇偶校验约束。通常,边缘连接被随机选择。如果在图中避免短长度(short length)的循环,则LDPC码的错误校正能力提高。在(r,c)规则码中,n个变量节点(V1,V2,…,Vn)中的每一个与r个校验节点连接,并且m个校验节点(C1,C2,…,Cm)中的每一个与c个位节点连接。在非规则LDPC码中,校验节点度不一致。类似地,变量节点度不一致。在QC-LDPC码中,奇偶校验矩阵H被构成为p×p矩阵的块,使得块中的位只参与块中的一个校验方程,并且块中的每个校验方程只涉及来自块的一个位。在QC-LDPC码中,码字循环移位p而产生另一个码字。这里p是方矩阵的大小,该方矩阵是零矩阵或者循环矩阵。这是一般化的循环码,其中码字循环移位1而产生另一个码字。p×p矩阵的块可以是零矩阵或大小为p×p的循环移位的单位矩阵。
图2示出根据本公开的某些实施例的企业计算机***200的示例架构。在示例中,企业计算机***200包括主机210和多个企业SSD 220。主机210将代表用户的数据存储在SSD 220中。数据作为码字存储在企业SSD中,以用于ECC保护。例如,企业SSD可以包括ECC编码器(例如,图1的LDPC编码器110)。对于同一用户,数据的部分可以分布在企业SSD 220上以用于安全,或者可以冗余地存储在多个企业SSD 220中。
主机210可以接收用户对存储在SSD 220中的用户数据的请求。作为响应,主机在合适的情况下将数据读取命令212发送到企业SSD 220。每个这样的企业SSD 220处理所接收的数据读取命令,并在完成处理时向主机210发送响应222。响应222可以包括读取数据和/或解码失败。在示例中,每个企业SSD包括QoS感知的ECC解码器(例如,图1的LDPC解码器140)。处理数据读取命令并发送响应222包括由QoS感知ECC解码器对存储在企业SSD中的码字进行解码以输出读取数据和/或解码失败。
通常,企业SSD可以是存储装置,其将数据持续地存储或临时高速缓存在非易失性半导体存储器中,并且旨在用于存储***、(例如,数据中心内的)服务器和直接附加存储(DAS)装置中。越来越多的企业应用程序需要高数据吞吐量和低事务延迟,而SSD被用作可行的存储方案来提高性能、效率、可靠性并降低总体运转开支。企业SSD通常使用NAND闪速存储器,并且传递比旋转硬盘驱动器(HDD)更高的性能并消耗更低的功率。NAND闪速存储器存在多个与其相关联的固有问题,最重要的两个包括:在重复写入期间损耗作为NAND闪存单元的有限寿命预期,以及自然发生的错误率。企业SSD可以根据定义了特定性能规范的一组工业标准进行设计和制造,以支持更大的写入工作负载、更极端的环境条件以及从比用户SSD(例如,个人电脑、笔记本电脑和平板电脑)更高的位错误率(BER)的恢复,其中特定性能规范包括延迟规范。相比用户SSD,企业SSD可提供的优点的示例包括更高的性能、在断电的事件中保护DRAM存储的数据、更强的错误校正码(ECC)、一致和持续的服务质量以及更高级别的耐久性。
图3示出根据本公开的某些实施例的延迟测量的示例。如下文进一步描述的,企业SSD的解码器访问QOS延迟规范。通过测量实际延迟,解码器可以将作为结果的延迟测量与QOS延迟规范进行比较,然后确定是否可能有QOS延迟规范的违规。如果可能违规,则解码器终止解码并通知企业主机(例如,诸如图2的主机210)。否则,解码器在合适的情况下继续解码并输出解码数据(例如,在下一次解码迭代中未检测到可能的违规并且未执行解码终止)。
在示例中,QOS延迟规范可以被定义为两个向量:概率向量“P”和延迟向量“T”。P=[p1,p2,p3,…,pn]表示待在延迟T=[t0,t1,t2,…,tn]内被解码的码字的概率,延迟T表示从包括开销延迟的总延迟分配给解码的延迟。例如,对应于低9QoS规范,p1可以是90%,p2可以是99%,p3可以是99.9%,依此类推。根据特定时间延迟,t1可以是70ms,t2可以是100ms,t3可以是120ms,依此类推。解码器确保其QoS可以满足QOS延迟规范。
为此,解码器保持一组计数值“C”以记录在某个时间窗口“W”内解码的码字的数量C=[c1,c2,…,cn]。这些计数值可称为延迟计数值,因为它们指示在特定延迟间隔内解码的码字计数。例如,“ci”记录利用ti-1和ti之间的延迟解码的码字的数量,假设t0-1=0。时间窗口“W”可被预定义为具有某段时长,例如五秒。
在该示例中,“S”表示计数值的总和(例如,sum(ci)=S),并且“qi”表示标准化计数值(例如,对于i=1,2,…,n,qi=ci/S)。如果在解码器继续解码以进行更多迭代时可能有QOS延迟规范的违规,则解码器被配置为终止码字。解码器确定预期的QoS违规的方式是将qi与pi进行比较。例如,假设当前解码延迟落在tj-1和tj之间,如果对于所有i>=j,qi>=pi-d,则可能存在QoS违规并且解码器立即终止解码并发送解码失败。“d”是解码器终止解码并发送解码失败的预定安全余量。如果不存在可能的QoS违规,则解码器继续执行解码直到达到最大迭代次数,解码成功或满足某些其他解码终止标准。
参照图3的具体示图,该图示出了跟踪在时间窗口“W”内处理读取命令310的示例以及跟踪计数值320的示例。如图所示,在时间窗口“W”内(例如,在时间“T”和时间“T+W”之间)接收五个读取命令(例如,“R1”至“R5”)。在该示例示图中,数据读取命令与码字相关联并且处理数据读取命令包括对该码字进行解码(尽管示例技术类似地应用于对与相同数据读取命令相关联的多个码字进行解码)。对于每个数据读取命令,解码器测量对对应于数据读取命令的码字进行解码的延迟。例如,对应于“R1”的第一码字的解码在90ms内完成。对应于“R2”的第二码字的解码在80ms内完成。对应于“R3”的第三码字的解码在115ms内完成。对应于“R4”的第四码字的解码在110ms内完成。并且对应于“R5”的第五码字的解码在150ms内完成。
还是在该说明性示例中,QOS延迟规范指定四个概率和五个延迟:p1=90%、p2=99%、p3=99.9%以及p4=99.99%;并且t0=70ms、t1=100ms、t2=120ms、t3=140ms以及t4=160ms。在计数值的跟踪320中,解码器定义对应于这些指定延迟的四个延迟间隔:指定延迟t0和t1之间的第一延迟间隔、指定延迟t1和t2之间的第二延迟间隔、指定延迟间隔t2和t3之间的第三延迟间隔以及指定延迟间隔t3和t4之间的第四延迟间隔。因此,解码器确定第一和第二码字中的每一个的解码落在第一延迟间隔中,第三和第四码字中的每一个的解码落在第二延迟间隔中,并且第五码字的解码落入第四延迟间隔中。换言之,确定“R1”和“R2”中的每一个的处理与第一延迟间隔相关联,“R3”和“R4”中的每一个的处理与第二延迟间隔相关联,并且“R5”的处理与第四延迟间隔相关联。
给定跟踪320,解码器确定针对在时间窗口“W”期间接收的数据读取并在第一延迟间隔内解码的码字的总计数是2,针对在时间窗口“W”期间接收的数据读取并在第二延迟间隔内解码的码字的总计数为2,针对在时间窗口“W”期间接收的数据读取并在第三延迟间隔内解码的码字的总计数为零,并且针对在时间窗口“W”期间接收的数据读取并在第四延迟间隔内解码的码字的总计数是1。因此,解码器将第一延迟间隔的第一计数值c1设置为2,将第二延迟间隔的第二计数值c2设置为2,将第三延迟间隔的第三计数值c3设置为0,并且将第四延迟间隔的第四计数值c4设置为1。
接下来,解码器生成c1+c2+c3+c4的和S。在上述说明性示例中,该总和等于5。然后将每个计数值标准化以生成标准化计数值。因此,解码器生成第一延迟间隔的第一标准化计数值q1为40%,第二延迟间隔的第二标准化计数值q2为40%,第三延迟间隔的第三标准化计数值q3为零,并且第四延迟间隔的第四标准化计数值q4为20%。
为了确定在当前解码迭代中是否存在违规,解码器测量当前延迟并且确定该延迟落在例如第二延迟间隔(例如,tj-1和tj,其中j=2;换言之,在t1和t2之间)中。对于大于或等于“j”的所有“i”(例如,对于i=2、3和4),解码器将每个标准化计数值qi与由QOS延迟规范指定的相应概率pi进行比较。换言之,解码器将q2与p2、q3与p3以及q4与p4进行比较。比较可以使用预定余量(例如,预定百分比)。在说明性示例中,q2(40%)小于p2(99%)加上余量、q3(0%)小于p3(99.9%)加上余量、q4(20%)小于p4(99.99%)加上余量。因此,不存在可能的QOS延迟规范违规。
图4示出根据本公开的某些实施例的基于时间窗口更新延迟测量的示例。通常,解码器监控时间窗口中的延迟测量。每隔一段时间,延迟测量被更新。更新可以依赖于新的时间窗口,由此该时间是当前时间窗口。不同的触发器可以用于更新以及用于从第一时间窗口移动到第二时间窗口(例如,从先前时间窗口到当前时间窗口)。示例触发器包括解码码字的数量(或类似地,处理后的数据读取命令的数量)。例如,一旦该数量超过预定阈值(一百万个码字),则移位时间窗口。该移位可以是彻底的(例如,时间窗口之间不存在重叠)。或者,该移位可以包括重叠(例如,两个时间窗口重叠某段时长),使得当前时间窗口中的一些解码码字(或类似地,数据读取命令)对于先前时间窗口是共同的。
对于新的驱动或通电,延迟计数值“C”被初始化为全零。延迟计数值“C”可以每隔一定数量的码字,例如一百万个码字被更新。在示例中,为了支持更新,解码器保持两组计数值“C0”和“C1”,一组表示当前QoS,一组表示先前时间窗口的QoS。例如,如果“C0”是当前窗口QoS计数值,则“C1”是先前QoS计数值。在对一百万个码字的延迟计数完成时,如下执行更新:“C0=C0/2+C1/2”。如果存在十进制数,则可以四舍五入该数字。然后解码器将“C1”设置为全零并开始计数下一个窗口。每当断电时,计数值“C”不会保存到存储器中。
为了说明上述示例,使用两个时间窗口“W0”和“W1”。对于时间窗口“W0”,跟踪第一组计数值“C0”410。如果(例如,对于新的驱动或通电)先前没有执行跟踪,则将第一组计数值“C0”初始化为全零。在触发器移位到下一个时间窗口“W1”时,执行现有计数值的更新和下一个计数值的初始化420。特别地,第一组计数值“C0”被更新为“C0/2+C1/2”,并且此后第二组计数其“C1”被初始化为全零。在执行更新和初始化420时,解码器跟踪用于下一个时间窗口“W1”的第二组计数值“C1”430。在触发又一次移位时,第二组计数值“C1”更新为“C0/2+C1/2”,并且此后第一组计数值“C0”被重新初始化为全零并重新用于在下一个时间窗口中的跟踪,以此类推,使得在时间窗口之间存在重复的移位,并且更新、重新初始化和重新使用计数值“C0”和“C1”。
例如,从通电开始并假设每组中有四个计数值,两组都被初始化为零:“C0=[0 00 0]且C1=[0 0 0 0]”。在初始时间窗口中,“C0”被跟踪为“[2 2 0 1]”。在第一次移位到下一个时间窗口时,“C0”被更新为“[2 2 0 1]/2+[0 0 0 0]/2=[1 1 0 1]”(假设十进制数被取整)。在下一个时间窗口中,“C1”被初始化为全零,并被跟踪为“[4 5 20]”。在第二次移位到再下一次时,“C1”被更新为“[1 1 0 1]/2+[4 52 0]/2=[3 3 1 1]”。在下一个时间窗口中,“C0”被初始化为全零并且继续跟踪。
图5示出根据本公开的某些实施例的解码***500的示例示图。解码***500表示ECC解码器,其在上文结合图3和图4描述的技术中实现,并且可以是结合图2描述的企业SSD的部分。
在示例中,解码***500包括QoS寄存器510,其存储由QOS延迟规范指定的概率向量“P”和延迟向量“T”。这些向量可以通过解码***500的QoS控制模块520而被配置并存储在寄存器中。该模块520可以在固件中实现,并且可以基于如在企业SSD的规范中定义的QOS延迟规范来设置“P”和“T”向量。
解码***还保持第一组延迟计数值“C0”520和第二组延迟计数值“C1”530。这些计数值可以存储在解码***500的存储器中。解码***500还包括解码器540,诸如QoS感知ECC解码器,该QoS感知ECC解码器基于延迟测量实现ECC解码进程和提前终止。该解码器540更新两组延迟计数值“C0”520和“C1”530。
图6至图8示出用于基于QoS感知ECC解码器对码字进行解码的示例流程。该解码器被描述为执行示例流程的特定操作。特别地,QoS感知ECC解码器可以是诸如在结合图1和图2描述的企业SSD或服务器内的计算机***内的计算组件。QoS感知ECC解码器可以具有特定硬件配置以执行操作。可选地或另外地,QoS感知ECC解码器可以包括配置有特定指令的通用硬件。在示例中,QoS感知ECC解码器包括一个或多个处理器和一个或多个存储器。存储器存储计算机可读指令以实现特定于QoS感知ECC解码器的功能。当由处理器运行时,指令导致功能的执行。存储在存储器中的指令与底层处理器结合来表示用于执行功能的方式。示例流程中的一些操作是类似的。为了简洁起见,本文不再重复相似之处。进一步地,尽管以特定的顺序示出了操作,但是如对于本领域技术人员来说将显而易见的是,操作的其他布置是可能的,并且可以跳过一些操作。
图6示出根据本公开的某些实施例的由QoS感知ECC解码器对码字进行解码的示例流程600。流程600可以开始于操作602,在操作602中,解码器在时间窗口期间接收数据读取命令。数据读取命令与存储在存储器(例如,包括解码器的SSD的存储器)中的码字相关联。响应于对用户存储在存储器中的数据的用户请求,可以从主机接收数据读取命令。时间窗口可以表示跟踪对码字解码的延迟测量的时间段。当然,可以在时间窗口期间接收多个数据读取命令和/或可以在时间窗口期间对多个码字进行解码。
在操作604中,解码器基于ECC进程开始对码字的解码。解码进程取决于用于保护用户的数据的ECC类型。例如,如果使用LDPC编码,则ECC进程对应于LDPC解码。通常,解码是迭代的。解码可以在每次迭代时跟踪延迟测量,并且如果在解码迭代时延迟测量可能有QOS延迟规范违规,则可以退出解码迭代并终止解码。
在操作606中,解码器测量与解码相关联的延迟。例如,在当前解码迭代中,解码器测量解码所需的时间。
在操作608中,解码器基于延迟保持时间窗口的延迟测量。在示例中,延迟测量包括时间窗口上的延迟分布。延迟分布可以表示为时间窗口的一组延迟计数值。基于码字的解码(以及针对相同数据读取命令或针对在时间窗口期间接收的其他数据读取命令的其他码字的解码)来初始化和更新这些计数值。在触发以移位到另一时间窗口时,该组计数值被进一步更新。计数值也可以被标准化以生成一组标准化计数值。
在操作610中,解码器访问QOS延迟规范。在示例中,QOS延迟规范包括定义可接受的解码延迟的规范。可以从存储器访问QOS延迟规范,在存储器中QOS延迟规范被存储为概率向量和延迟向量。
在操作612中,解码器比较延迟测量和QOS延迟规范。例如,给定当前解码延迟,解码器确定标准化计数值的索引。将索引等于或大于所确定的索引的标准化计数值与来自概率向量的相应概率进行比较。该比较指示(例如,在下一次解码迭代中)是否可能发生QoS违规。如果可能发生QoS违规,则解码器执行操作614。否则,解码器循环返回以继续迭代解码。
在操作614中,解码器基于指示可能发生QoS违规的比较来终止解码。在操作616中,解码器发送关于解码失败的通知。例如,通知被发送给主机。
图7示出根据本公开的某些实施例的生成延迟测量和确定QoS违规的示例流程700。流程700的操作可以实现为图6的操作608和操作610的子操作。
图7的流程700可以开始于操作702,在操作702中解码器初始化用于时间窗口的计数值。在示例中,计数值形成一组延迟计数值并被初始化为零。
在操作704中,解码器测量与处理数据读取命令相关联的延迟。在示例中,在时间窗口期间接收数据读取命令。所测量的延迟对应于对与数据读取命令相关联的码字进行解码的解码延迟。如果在时间窗口期间接收到其他数据读取命令,则解码器类似地测量与该数据读取命令相关联的延迟。
在操作706中,针对在操作704中测量的每个延迟,解码器在合适的情况下递增计数值。在示例中,解码器访问被定义为由QoS延迟规范指定的延迟之间的差的延迟间隔。每个延迟计数值与延迟间隔中的一个相关联。解码器确定延迟落在特定延迟间隔内。因此,解码器递增对应于该特定延迟间隔的计数值。跨越不同延迟间隔的计数值可以基于针对在时间窗口期间接收的不同数据读取命令的所测量的延迟被类似地更新。
在操作708中,解码器生成计数值的总和。在操作710中,解码器基于总和对每个计数值进行标准化。例如,将每个延迟计数值除以总和以生成标准化延迟计数值。
在操作712中,解码器将标准化计数值与在相应延迟间隔内解码码字的相应概率进行比较。在示例中,每个延迟计数值对应于时间间隔。此外,QoS延迟规范指定概率。给定当前解码延迟,解码器确定当前解码延迟落入的延迟间隔并确定延迟间隔的索引“j”。然后解码器将每个具有等于或大于“j”的索引“i”的标准化延迟计数值与具有索引“i”的相应概率加上预定安全余量进行比较。如果比较指示任何这种标准化延迟计数值等于或大于相应概率加余量,则解码器确定可能发生QoS延迟规范的违规。
在操作714中,解码器根据操作712的结果声明QoS延迟规范的违规。
图8示出根据本公开的某些实施例的基于时间窗口更新延迟测量的示例流程800。流程800的操作可以实施为图6的操作608的子操作。通常,延迟测量包括时间窗口上的延迟分布。延迟分布可以表示为基于在时间窗口期间接收的数据读取命令的处理而保持的一组延迟计数值。一个窗口的延迟分布可用于在触发事件时另一窗口的延迟分布的初始化中。触发事件的示例包括解码码字的数量超过预定阈值。
图8的流程800可以开始于操作802,在操作802中解码器确定解码码字的数量超过预定阈值。换言之,解码器检测到从第一时间窗口移位到第二时间窗口的触发事件。移位应该伴随着第一窗口的第一延迟分布的更新和第二窗口的第二延迟分布的初始化。第一延迟分布的更新依赖于第二延迟分布,如先前计算的和之前初始化的。在执行更新之后,可以执行第二延迟分布的初始化。
在操作804中,解码器访问用于第二时间窗口的第二计数值。在示例中,第二计数值表示第二延迟分布并且基于检测到的触发事件而被访问。可以从解码器的存储器访问这些计数值。
在操作806中,解码器基于第二计数值更新用于第一时间窗口的第一计数值。在示例中,基于在第一时间窗口期间接收的数据读取命令的处理,递增第一计数值。在触发事件时,第一计数值器据更新为其当前值和第二计数值的函数(例如,其当前值的一半加上第二计数值的一半)。
在操作808中,解码器初始化第二计数值。在示例中,这些计数值被初始化为零。
在操作810中,解码器保持第二计数值。例如,这些计数值根据在第二时间窗口期间接收的数据读取命令的处理而被递增。
图9是能够实现本公开的计算机***的代表,例如图1的错误校正***100。图9仅仅是对本公开的实施例的说明并且不限制如权利要求中所描绘的本公开的范围。在一个实施例中,该***是计算机***900,其通常包括监视器910、计算机920、用户输出装置930、用户输入装置940、通信接口950等。图1的错误校正***100实现计算机***900的一些或所有组件。
如图9所示,计算机920可以包括处理器960,处理器960经由总线子***990与数个***装置通信。这些***装置可以包括用户输出装置930、用户输入装置940、通信接口950和诸如随机存取存储器(RAM)970和盘驱动器980的存储子***。
用户输入装置940包括用于向计算机***920输入信息的所有可能类型的装置和机制。这些可以包括键盘、小键盘、结合到显示器中的触摸屏、诸如语音识别***的音频输入装置、麦克风和其他类型的输入装置。在各个实施例中,用户输入装置940通常实现为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令***、眼睛跟踪***等。用户输入装置940通常允许用户通过诸如点击按钮等的命令来选择出现在监视器910上的对象、图标、文本等。
用户输出装置930包括用于输出来自计算机920的信息的所有可能类型的装置和机制。这些可以包括显示器(例如,监视器910)、诸如音频输出装置的非可视显示器等。
通信接口950提供到其他通信网络和装置的接口。通信接口950可以用作用于从其他***接收数据和向其他***传送数据的接口。通信接口950的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、ISDN)、(异步)数字用户线路(DSL)单元、火线接口、USB接口等。例如,通信接口950可以联接到计算机网络、火线总线等。在其他实施例中,通信接口950可以物理地集成在计算机920的主板上,并且可以是诸如软DSL的软件程序等。
在各个实施例中,计算机***900还可以包括能够通过诸如HTTP、TCP/IP、RTP/RTSP协议的网络进行通信的软件等。在本公开的可选实施例中,还可以使用其他通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机920包括来自Intel的一个或多个Xeon微处理器作为处理器960。此外,在一个实施例中,计算机920包括基于UNIX的操作***。
RAM 970和盘驱动器980是被配置为存储诸如本公开的实施例的数据的有形介质的示例,包括可执行计算机代码、人类可读代码等。其他类型的有形介质包括软盘、可移动硬盘、诸如CD-ROM,DVD和条形码的光盘存储介质、诸如闪速存储器的半导体存储器、非暂时性只读存储器(ROMS)、电池支持的易失性存储器、网络存储装置等。RAM 970和盘驱动器980可以被配置为存储提供本公开的功能的基本编程和数据构造。
提供本公开的功能的软件代码模块和指令可以存储在RAM 970和盘驱动器980中。这些软件模块可以由处理器960运行。RAM 970和盘驱动器980还可以提供用于存储根据本公开所使用的数据的储存库。
RAM 970和盘驱动器980可以包括数个存储器,该存储器包括用于在程序运行期间存储指令和数据的主随机存取存储器(RAM)和存储固定非暂时性指令的只读存储器(ROM)。RAM 970和盘驱动器980可以包括文件存储子***,该文件存储子***为程序和数据文件提供持久(非易失性)存储。RAM 970和盘驱动器980还可以包括诸如可移动闪速存储器的可移动存储***。
总线子***990提供用于使计算机920的各种组件和子***根据需要彼此通信的机制。尽管总线子***990被示意性地示为单个总线,但总线子***的可选实施例可以利用多个总线。
图9是能够实现本公开的计算机***的代表。对于本领域的普通技术人员来说将显而易见的是,许多其他硬件和软件配置适用于本公开。例如,计算机可以是台式、便携式、机架式或平板式配置。另外,计算机可以是一系列网络化计算机。此外,考虑使用其他微处理器,例如PentiumTM或ItaniumTM微处理器;来自超威半导体公司(Advanced MicroDevices,Inc.)的OpteronTM或AthlonXPTM微处理器;等等。此外,考虑其他类型的操作***,例如来自微软公司(Microsoft Corporation)的等,来自太阳微***公司(Sun Microsystems)的Solaris、LINUX、UNIX等。在其他实施例中,上述技术可以在芯片或辅助处理板上实施。
本公开的各个实施例可以软件或硬件中的逻辑的形式或两者的组合来实施。该逻辑可作为一组指令存储在计算机可读或机器可读的非暂时性存储介质中,该组指令适于指导计算机***的处理器执行本公开的实施例中公开的一组步骤。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适于指导信息处理装置执行本公开的实施例中公开的一组步骤。基于本文提供的公开和教导,本领域的普通技术人员将理解实现本公开的其他方式和/或方法。
这里描述的数据结构和代码可以部分地或完全地存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于:易失性存储器,非易失性存储器,诸如盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘)的磁性和光学存储装置,或者现在已知或以后开发的能够存储代码和/或数据的其他介质。本文描述的硬件模块或设备包括但不限于:专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器和/或现在已知或以后开发的其他硬件模块或设备。
本文描述的方法和进程可以部分或完全实现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机***读取并运行代码和/或数据时,计算机***执行相关联的方法和进程。方法和进程还可以部分或完全实现在硬件模块或设备中,使得当激活硬件模块或设备时,它们执行相关联的方法和进程。可以使用代码、数据和硬件模块或设备的组合来实现本文公开的方法和进程。
尽管为了清楚理解的目的已经相当详细地描述了前述实施例,但是本公开不限于所提供的细节。存在实施本公开的许多替代方法。所公开的实施例是说明性的而非限制性的。
Claims (20)
1.一种计算机实现的方法,包括:
通过错误校正码解码器,即ECC解码器,在时间窗口期间接收数据读取命令,所述数据读取命令与存储在存储器中的码字相关联;
通过所述ECC解码器,基于ECC进程对所述码字开始解码;
通过所述ECC解码器,测量与所述解码相关联的延迟;
通过所述ECC解码器,基于所述延迟保持所述时间窗口的延迟测量;
通过所述ECC解码器,比较所述延迟测量和服务质量延迟规范,即QOS延迟规范;并且
通过所述ECC解码器,基于所述比较终止所述解码。
2.根据权利要求1所述的计算机实现的方法,其中所述延迟测量包括所述时间窗口上的延迟分布。
3.根据权利要求2所述的计算机实现的方法,其中所述延迟分布包括与第一延迟间隔内由所述ECC解码器处理的第一数据读取命令相关联的第一标准化计数值,并且其中所述延迟分布进一步包括与第二延迟间隔内由所述ECC解码器处理的第二数据读取命令相关联的第二标准化计数值。
4.根据权利要求3所述的计算机实现的方法,其中所述延迟分布由所述ECC解码器至少通过以下步骤生成:
确定与响应于所述数据读取命令的所述解码相关联的所述延迟落在所述第一延迟间隔内;
基于所述延迟落在所述第一延迟间隔内的所述确定,递增与所述第一延迟间隔相关联的第一计数值;
生成所述第一计数值和与所述第二延迟间隔相关联的至少第二计数值的总和;并且
基于第一计数和所述总和生成所述第一标准化计数值。
5.根据权利要求3所述的计算机实现的方法,其中在所述时间窗口中接收所述第一数据读取命令的部分,并且其中在先前时间窗口中接收所述第一数据读取命令的剩余部分。
6.根据权利要求1所述的计算机实现的方法,其中所述延迟测量和所述QOS延迟规范的比较指示所述QOS延迟规范的违规,并且其中基于所述违规终止所述解码。
7.根据权利要求6所述的计算机实现的方法,其中所述延迟测量包括与在延迟间隔内由所述ECC解码器处理的数据读取命令相关联的标准化计数值,其中所述QOS延迟规范包括与完成在所述延迟间隔内的所述数据读取命令的处理相关联的概率。
8.根据权利要求7所述的计算机实现的方法,其中由所述ECC解码器至少通过确定所述标准化计数值超过所述概率来确定所述违规。
9.根据权利要求1所述的计算机实现的方法,进一步包括:
通过所述ECC解码器,检测从所述时间窗口移位到第二时间窗口的触发事件;
通过所述ECC解码器,基于所述触发事件访问所述第二时间窗口的第二延迟测量;并且
通过所述ECC解码器,基于所述第二延迟测量来更新所述延迟测量。
10.根据权利要求9所述的计算机实现的方法,其中所述第二延迟测量包括第二延迟分布,并且进一步包括:
通过所述ECC解码器,在更新所述延迟测量之后初始化所述第二时间窗口的所述第二延迟测量。
11.根据权利要求9所述的计算机实现的方法,其中检测所述触发事件包括:
确定解码码字的数量已达到阈值;并且
基于所述解码码字的数量已达到阈值的所述确定,将所述时间窗口移位到所述第二时间窗口。
12.一种计算机***,包括:
存储器;以及
错误校正码解码器,即ECC解码器,与所述存储器通信地联接并且:
在时间窗口期间接收数据读取命令,所述数据读取命令与存储在所述存储器中的码字相关联;
基于ECC进程开始所述码字的解码;
测量与所述解码相关联的延迟;
基于所述延迟保持所述时间窗口的延迟测量;
比较所述延迟测量和服务质量延迟规范,即QOS延迟规范;并且
基于所述比较终止所述解码。
13.根据权利要求12所述的计算机***,其中从主机接收所述数据读取命令,并且其中所述ECC解码器进一步基于所述解码的终止向所述主机发送解码失败的指示。
14.根据权利要求12所述的计算机***,其中所述QOS延迟规范包括完成在延迟间隔内的所述数据读取命令的处理的概率,其中所述ECC解码器进一步将所述概率存储在第一向量中并且将所述延迟间隔存储在第二向量中。
15.根据权利要求14所述的计算机***,其中所述第一向量存储在由所述ECC解码器的固件可配置的寄存器中。
16.根据权利要求14所述的计算机***,其中所述延迟测量包括与在延迟间隔内由所述ECC解码器处理的数据读取命令相关联的标准化计数值,并且其中所述ECC解码器进一步将所述标准化计数值存储在第三向量中。
17.根据权利要求16所述的计算机***,其中比较所述延迟测量和所述QOS延迟规范包括比较所述第一向量和所述第三向量,并且其中基于所述第一向量和所述第三向量的比较终止所述解码,所述比较指示所述QOS延迟规范的违规。
18.一种存储指令的非暂时性计算机可读存储介质,所述指令当在错误校正码解码器,即ECC解码器上运行时使所述ECC解码器执行包括以下的操作:
在时间窗口期间接收数据读取命令,所述数据读取命令与存储在存储器中的码字相关联;
基于ECC进程开始所述码字的解码;
测量与所述解码相关联的延迟;
基于所述延迟保持所述时间窗口的延迟测量;
比较所述延迟测量和服务质量延迟规范,即QOS延迟规范;并且
基于所述比较终止所述解码。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中所述延迟测量包括所述时间窗口上的延迟分布,其中所述延迟分布包括与在第一延迟间隔内由所述ECC解码器处理的第一数据读取命令相关联的第一标准化计数值,并且其中所述延迟分布进一步包括与第二延迟间隔内由ECC解码器处理的第二数据读取命令相关联的第二标准化计数值。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中所述延迟分布由所述ECC解码器至少通过以下步骤生成:
确定与响应于所述数据读取命令的所述解码相关联的所述延迟落在所述第一延迟间隔内;
基于所述延迟落在所述第一延迟间隔内的确定,递增与所述第一延迟间隔相关联的第一计数值;
生成所述第一计数值和与所述第二延迟间隔相关联的至少第二计数值的总和;并且
基于第一计数和所述总和生成所述第一标准化计数值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/450,722 US11082071B2 (en) | 2019-06-24 | 2019-06-24 | Quality of service (QoS) aware data storage decoder |
US16/450,722 | 2019-06-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112133358A true CN112133358A (zh) | 2020-12-25 |
CN112133358B CN112133358B (zh) | 2024-01-19 |
Family
ID=73849489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910866126.XA Active CN112133358B (zh) | 2019-06-24 | 2019-09-09 | 服务质量(qos)感知数据存储解码器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11082071B2 (zh) |
CN (1) | CN112133358B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110066768A1 (en) * | 2007-07-23 | 2011-03-17 | Rod Brittner | Quality of service and streaming attributes for a data storage device |
US20110066563A1 (en) * | 2009-09-11 | 2011-03-17 | Lalita Jagadeesan | Mashup sevices and methods with quality of sevice (QoS) support |
US20130179754A1 (en) * | 2010-09-29 | 2013-07-11 | International Business Machines Corporation | Decoding in solid state memory devices |
US20140063915A1 (en) * | 2010-12-30 | 2014-03-06 | Kandou Labs, SA | Differential vector storage for dynamic random access memory |
US20180191381A1 (en) * | 2016-12-30 | 2018-07-05 | Sandisk Technologies Llc | Ecc decoder having adjustable parameters |
CN109671465A (zh) * | 2017-08-29 | 2019-04-23 | 爱思开海力士有限公司 | 具有自适应读取阈值方案的存储器***及其操作方法 |
US20190155546A1 (en) * | 2017-11-17 | 2019-05-23 | SK Hynix Memory Solutions America Inc. | Memory system with soft-read suspend scheme and method of operating such memory system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7701884B2 (en) * | 2004-04-19 | 2010-04-20 | Insors Integrated Communications | Network communications bandwidth control |
US8335949B2 (en) | 2009-11-06 | 2012-12-18 | Trellisware Technologies, Inc. | Tunable early-stopping for decoders |
US9104482B2 (en) * | 2009-12-11 | 2015-08-11 | Hewlett-Packard Development Company, L.P. | Differentiated storage QoS |
US8996957B1 (en) | 2012-05-22 | 2015-03-31 | Pmc-Sierra, Inc. | Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes |
US9665153B2 (en) * | 2014-03-21 | 2017-05-30 | Intel Corporation | Selecting a low power state based on cache flush latency determination |
US9729171B2 (en) * | 2015-09-24 | 2017-08-08 | Intel Corporation | Techniques for soft decision decoding of encoded data |
US10180874B2 (en) * | 2015-10-28 | 2019-01-15 | Western Digital Technologies, Inc. | Storage device operations based on bit error rate (BER) estimate |
US10484020B2 (en) * | 2016-02-03 | 2019-11-19 | SK Hynix Inc. | System and method for parallel decoding of codewords sharing common data |
US10291261B2 (en) * | 2016-04-25 | 2019-05-14 | SK Hynix Inc. | Early selection decoding and automatic tuning |
US10826539B2 (en) * | 2016-05-11 | 2020-11-03 | Idac Holdings, Inc. | Method and system for advanced outer coding |
US10565040B2 (en) * | 2016-12-01 | 2020-02-18 | Western Digital Technologies, Inc. | ECC decoder with selective component disabling based on decoding message resolution |
US10528506B2 (en) * | 2017-10-18 | 2020-01-07 | Western Digital Technologies, Inc. | Uniform performance monitor for a data storage device and method of operation |
US10599515B2 (en) | 2017-12-21 | 2020-03-24 | Intel Corporation | Transfer of encoded data stored in non-volatile memory for decoding by a controller of a memory device |
US10846175B2 (en) * | 2018-04-10 | 2020-11-24 | Micron Technology, Inc. | High throughput bit correction of data inside a word buffer for a product code decoder |
-
2019
- 2019-06-24 US US16/450,722 patent/US11082071B2/en active Active
- 2019-09-09 CN CN201910866126.XA patent/CN112133358B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110066768A1 (en) * | 2007-07-23 | 2011-03-17 | Rod Brittner | Quality of service and streaming attributes for a data storage device |
US20110066563A1 (en) * | 2009-09-11 | 2011-03-17 | Lalita Jagadeesan | Mashup sevices and methods with quality of sevice (QoS) support |
US20130179754A1 (en) * | 2010-09-29 | 2013-07-11 | International Business Machines Corporation | Decoding in solid state memory devices |
US20140063915A1 (en) * | 2010-12-30 | 2014-03-06 | Kandou Labs, SA | Differential vector storage for dynamic random access memory |
US20180191381A1 (en) * | 2016-12-30 | 2018-07-05 | Sandisk Technologies Llc | Ecc decoder having adjustable parameters |
CN109671465A (zh) * | 2017-08-29 | 2019-04-23 | 爱思开海力士有限公司 | 具有自适应读取阈值方案的存储器***及其操作方法 |
US20190155546A1 (en) * | 2017-11-17 | 2019-05-23 | SK Hynix Memory Solutions America Inc. | Memory system with soft-read suspend scheme and method of operating such memory system |
Also Published As
Publication number | Publication date |
---|---|
US20200403642A1 (en) | 2020-12-24 |
CN112133358B (zh) | 2024-01-19 |
US11082071B2 (en) | 2021-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102645583B1 (ko) | 예측성 메모리 유지보수 | |
US10707899B2 (en) | Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes | |
US20190146866A1 (en) | Updating reliability data | |
US9170877B2 (en) | Resolving trapping sets | |
US11996865B2 (en) | Data storage device | |
US20200373944A1 (en) | Data storage device | |
CN112133353A (zh) | Nand闪速存储器中针对读取阈值基于深度学习的回归框架 | |
US20150169406A1 (en) | Decoding techniques for a data storage device | |
US11108407B1 (en) | Performance of a bit flipping (BF) decoder of an error correction system | |
TW201902138A (zh) | 低密度同位(ldpc)解碼的提前終止 | |
US11177835B2 (en) | Data storage device | |
US10103748B2 (en) | Decoding method, memory control circuit unit and memory storage device | |
CN108932177B (zh) | 具有可变长度分量的广义低密度奇偶校验码 | |
US10157097B2 (en) | Redundant bytes utilization in error correction code | |
US10601546B2 (en) | Dynamic interleaver change for bit line failures in NAND flash storage | |
CN112133359B (zh) | Nand闪存的错误特性估计 | |
CN112951313A (zh) | 用于纠错的存储控制器、包括其的存储设备及其操作方法 | |
US10931308B2 (en) | Error correction circuit and method of operating the same | |
CN112133358B (zh) | 服务质量(qos)感知数据存储解码器 | |
US11025283B1 (en) | Decoding latency and throughput of a multi-decoder error correction system | |
US11664821B1 (en) | Error floor performance of a bit flipping decoder through identifying unreliable check nodes | |
US11804857B2 (en) | Electronic device | |
US12038809B1 (en) | Failure analysis for uncorrectable error events | |
CN105938728B (zh) | 用于近似平衡码的编码器和解码器设计 | |
US11567828B2 (en) | Asymmetric LLR generation using assist-read |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |