CN109471751A - 针对海量存储装置来检测静默数据讹误 - Google Patents
针对海量存储装置来检测静默数据讹误 Download PDFInfo
- Publication number
- CN109471751A CN109471751A CN201811044115.5A CN201811044115A CN109471751A CN 109471751 A CN109471751 A CN 109471751A CN 201811044115 A CN201811044115 A CN 201811044115A CN 109471751 A CN109471751 A CN 109471751A
- Authority
- CN
- China
- Prior art keywords
- logic
- data
- crc
- code
- data segment
- 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
Classifications
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
一个实施例提供存储控制器。存储控制器包括:主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将数据有效负载划分成多个数据段;循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到多个数据段之中的另一数据段。
Description
技术领域
本公开涉及针对海量存储装置检测静默数据讹误。
背景技术
扇区是主机能够在存储装置上进行访问的存储的最小粒度。主机命令使用逻辑块地址(LBA)来定址这些扇区,其中每个LBA指向特定扇区。最优扇区大小(512字节、1k、2k、4k、...)取决于主机应用要求而改变。然而,在实现侧,硬件和介质布局优化(针对性能、弹性和成本)规定了介质扇区大小。典型地,主机扇区大小是介质扇区大小的几倍。主机应用要求写入是基本的(atomic)。那意味着整个主机扇区被提交(commit)给介质,或者不被提交给介质。如果部分提交(破损)的主机扇区的读取未返回故障,则结果是静默数据讹误。
附图说明
所述要求保护的主题的特征和优点将从与其相符的实施例的以下详细描述中显而易见,所述描述应参照附图来考虑,在附图中:
图1图示了与本公开的若干实施例相符的存储系统;
图2图示了根据一个实施例,在数据写入操作期间各种域的数据流示例;
图3图示了根据本公开的各种实施例的一般化数据流示例;
图4是根据本公开的各种实施例的操作的流程图;
图5是根据本公开的各种实施例的操作的流程图;
图6是图示了与本公开的一个实施例相符的操作的流程图;以及
图7是图示了与本公开的一个实施例相符的操作的流程图。
虽然以下具体实施方式将通过对说明性实施例所做出的参照而继续,但其许多备选、修改和变化将对本领域技术人员是显而易见的。
具体实施方式
图1图示了与本公开的若干实施例相符的系统100。系统100可包括存储控制器电路系统102、存储装置104、主机处理器电路系统106和主机系统存储器108。主机系统存储器108可包括易失性随机存取存储器,例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等。在一些实施例中,存储装置104可作为一个集成电路(其可还包括存储器电路系统(例如,DRAM类型存储器,未示出))而被形成存储控制器电路系统102的一部分和与存储控制器电路系统102一起封装。主机处理器电路系统106可对应于单核或多核通用处理器,诸如由Intel® Corp.所提供的那些处理器等。主机处理器106和主机系统存储器108在本文中可还被称为“主机域150”。
存储装置104可包括例如固态装置(SSD)电路系统(例如,非易失性存储器(NVM)电路系统),例如,不要求功率来维持由存储介质所存储的数据的状态的存储介质。非易失性存储器可包括但不限于NAND闪速存储器(例如,三级单元(TLC)NAND或任何其它类型的NAND(例如,单级单元(SLC)、多级单元(MLC)、四级单元(QLC)等))、NOR存储器、固态存储器(例如,平面或三维(3D)NAND闪速存储器或NOR闪速存储器)、使用硫族化物相变材料(例如,硫族化物玻璃)的存储装置、字节可寻址非易失性存储器装置、铁电存储器、硅氧化氮氧化硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、字节可寻址随机可存取3D交叉点存储器、铁电晶体管随机存取存储器(Fe-TRAM)、磁阻随机存取存储器(MRAM)、相变存储器(PCM,PRAM)、电阻存储器、铁电存储器(F-RAM,FeRAM)、自旋转移矩存储器(STT)、热辅助交换存储器(TAS)、千足虫存储器、浮动结栅存储器(FJG RAM)、磁隧道结(MTJ)存储器、电化学单元(ECM)存储器、二元氧化物细丝单元存储器(binary oxide filament cellmemory)、界面交换存储器、电池备份RAM、奥氏存储器、纳米线存储器、电可擦可编程只读存储器(EEPROM)等。在一些实施例中,字节可寻址随机可存取3D交叉点存储器可包括无晶体管可堆叠交叉点架构,在该架构中存储器单元位于字线和位线的相交处,并且是单独可寻址的,并且在所述存储器单元中位存储基于体积电阻的变化。在其它实施例中,存储装置104可包括硬盘驱动器和/或其它类型的海量存储装置。存储装置104通常被组织成包括多个扇区(“介质扇区”或“存储装置扇区”):扇区0(124-0)、扇区1(124-1)、…、扇区Y(124-Y);其中Y是大于1的整数。每个介质扇区的大小通常取决于装置的类型、布局优化等。介质扇区大小对于给定装置通常是固定的,例如512字节的介质扇区大小。存储装置104在本文中可还被称为“存储域154”。
主机系统存储器108可托管操作系统(OS)110和关联文件系统(未示出)。在应用(未示出)由主机处理器电路系统106执行时,以存储装置104作为目标的读取和/或写入操作可由与OS 110关联的文件系统来发出。此类读取和写入操作一般包括具有要从存储装置104读取和/或写入到存储装置104的关联LBA扇区大小的逻辑块地址(LBA)。在一些实施例中,LBA扇区大小可以是单一固定大小,例如,512字节,并且在其它实施例(如下面将描述的)中,LBA扇区大小可对于不同应用/使用模型是不同的。如由主机处理器电路系统106发出的LBA扇区大小在本文中被称为“主机扇区大小”。通常,主机扇区大小一般是介质扇区大小的几倍,并且主机扇区的长度可以基于例如操作环境、应用需求/优化等。
存储控制器电路系统102(下文称为“控制器102”)通常配置成控制在主机处理器电路系统106与存储装置104之间的读取和写入操作。控制器102在本文中还被称为“存储控制器域152”。为执行读取或写入命令,控制器102通常配置成使用从主机处理器电路系统106发出的至少一个LBA来对存储装置104的物理扇区124-0、124-1、...、124-Y定址。在写入操作期间,控制器102配置成将(与主机扇区关联的)主机数据分段成多个段。控制器102可还配置成将段进一步划分成多个介质扇区大小数据部分(扇区化),如下面将更详细描述的。
控制器102包括主机数据分段逻辑112,其通常配置成将与来自主机域150的写入命令一起发出的数据有效负载分段成多个更小段。在至少一个实施例中,主机数据分段逻辑112配置成将数据有效负载分段成2N个段;其中N是整数。每个段的大小可基于例如对于数据有效负载的错误校正计算的处理开销要求(一般来说,对于错误校正,更小的段比更大的段要求更少处理开销)。控制器102还包括CRC(循环冗余校验)编码/解码逻辑114,其通常配置成对每个段的CRC码进行编码(并且在读取操作期间,将CRC码解码以确认数据完整性)。由CRC编码/解码逻辑114所生成的CRC码可包括与段配对的短(例如,4位)校验值。CRC编码/解码逻辑114可生成CRC码,例如,作为段的多项式除法的余数。
如上所描述的,静默数据讹误可在数据有效负载的一个段被正确写入到存储装置时发生,但系统中断事件(例如,功率故障,系统重置等)在其余段被写入到存储装置前发生。因此,在常规存储系统中,在被成功写入了的段中有“正确”数据,但在系统中断事件发生前未被写入的段中有“陈旧”数据。此类“陈旧”数据是一般具有每个段的“正确”CRC码的数据(如在先前写入操作期间所写入的),但陈旧数据对于当前(部分失败的)写入操作是不正确的。因此,在陈旧数据被读取时,在它将具有正确CRC码的意义上它将是“正确的”,但由于它不是在失败的写入操作期间预期被写入的数据而是不正确的。因此,此类数据可在读取操作期间返回不正确的结果,但此类不正确的结果将在常规存储系统中变成未检测到的。
相应地,为了能够实现在写入操作期间静默数据讹误的检测,本实施例的控制器102还包括CRC重排序编码逻辑116,其通常配置成在写入操作期间“交换”或“移位”每个段的CRC码。在一个实施例中,逻辑116配置成将每个段的CRC码移位到后面段,并且将最后段的CRC码移位到第一段。在另一实施例中,逻辑116配置成将每个段的CRC码移位到前面段,并且将第一段的CRC码移位到最后段。在还有的其它实施例中,逻辑116配置成将CRC码移位某一数量的后面和/或前面段,例如将每个CRC码移位到两个段外的段。在还有的其它实施例中,逻辑116配置成将CRC码随机移位,同时确保每个段接收来自另一段的“新”CRC码。因此,并且如在下面将更详细描述的,在从存储装置104读取(在读取操作期间)数据有效负载时,如果在所有段被写入到存储器前曾有系统中断事件,则CRC解码操作将产生在系统中断事件发生前未被成功写入的任何段的CRC故障,并且因此,整个数据有效负载将被标记为失败的读取操作。
如上所描述的,取决于存储装置104的扇区大小和在数据写入操作期间,有效负载数据(来自主机域150)的每个段可被进一步划分成扇区长度部分,每个扇区长度部分具有等于(或小于)存储装置104的扇区124-0、124-1、...、和/或124-Y的大小的位长度。相应地,控制器102可还包括段扇区化逻辑118,其通常配置成将每个段划分成多个扇区长度部分。在至少一个实施例中,段扇区化逻辑118配置成将每个段扇区化成2X个扇区大小的部分;其中2X ≥ 2N,并且X是整数。当然,对于一些写入操作,每个段的大小可匹配存储装置104的扇区大小,在此情况下有效负载数据的进一步划分可以不是必需的。
控制器102可还包括ECC编码/解码逻辑120。ECC编码解码逻辑120配置成在写入操作期间通过错误校正码对每个段和/或扇区长度部分进行编码,并且在读取操作期间解码错误校正码以提供对于控制器102的错误校验功能性。例如,ECC编码/解码逻辑120可配置成将例如ECC的奇偶信息附连到存储(即,在写入操作期间)在存储装置104中的数据。响应于读取操作和/或作为其一部分,ECC编码/解码逻辑120可进一步配置成确定奇偶校验(即,错误校验子(error syndrome)),其随后可被利用以检测错误、识别有错误的位、和/或校正从存储装置104所读取的数据。一种或多种技术可用于错误校正和/或检测,例如,汉明码、里德-索罗门码(Reed-Solomon code)、低密度奇偶校验码(LDPC)、Bose-Chaudhuri-Hocquenghem(BCH)码等。当然,所列出的错误校正码只是示例,并且,可与本公开相符地利用配置成检测存储器单元错误、识别错误单元、和/或校正多个检测到的错误的其它ECC。在本公开的上下文中,ECC编码/解码逻辑120可被应用于每个段和/或扇区长度部分的读取和写入操作,并且因此,ECC编码/解码逻辑120可配置成选择基于段和/或扇区长度部分的大小来适当进行大小调整的错误校正方案。
在写入操作期间,并且假设段扇区化逻辑118已将数据有效负载的每个段划分成2X份,以生成多个扇区长度部分,段扇区化逻辑118可配置成将CRC码(由CRC编码/解码逻辑114针对段来确定)随附到段的最后扇区长度部分,并且将空集“间隔物”随附到该段的其余扇区长度部分。每个扇区长度部分可包括ECC码。“间隔物”(或“填充物”)可与CRC码具有相同的位长度,但不作为CRC码来操作。因此,在部分写入的情况(其中在中断事件发生前仅一个或多个扇区长度部分被写入到存储装置)下,带有“间隔物”CRC码的那些扇区长度部分的随后读取和ECC解码操作将导致数据读取失败。
控制器102还包括CRC重排序解码逻辑122,其通常配置成在读取操作期间并且在CRC编码/解码逻辑对每个段的CRC码进行解码前将每个CRC码“交换回”到每个原始CRC码/数据段对。因此,如果一个或多个段(和/或扇区长度部分)未能在前面写入操作期间写入,则从陈旧段交换到“新鲜”段的CRC码将不能通过CRC解码过程,并且读取操作将被标记为读取失败(严重失败)。
图2图示了根据一个实施例,在数据写入操作期间各种域的数据流示例200。继续参照图1,在图2的示例中,假设主机域150发出具有2KB数据有效负载202的写入命令。此外,假设对于此示例,存储控制器域152配置成生成1K字节段的CRC码,并且存储域具有512字节的扇区大小。相应地,存储控制器域152生成两个1KB段:204(数据B)和206(数据A)。另外,存储控制器域152生成每个段的CRC码:段206的CRCa 208和段204的CRCb 210。在将段204和206提交到存储域154和在能够实现静默数据讹误检测之前,存储控制器域152交换每个段204和206的CRC码,使得CRCa 208被随附到段206,并且CRCb 210被随附到段204,如通过箭头所示出的。另外,存储控制器域152可将每个段进一步划分成扇区长度部分212、218、222和228。部分212和218对应于数据A段206,并且部分222和228对应于数据B段204。另外,存储控制器域152配置成生成ECC码216、220、226和230,并且将ECC码随附到每个相应部分212、218、222和228。另外,存储控制器域152配置成生成第一部分212的间隔物字段214和部分222的间隔物字段224。CRCb 210可被随附到数据A段206的最后部分218,并且CRCa可被随附到数据B段204的最后部分228,如所示出的。存储控制器域152可尝试将数据部分212、间隔物字段214和ECC码216写入到存储域154的扇区(例如,扇区0)。存储控制器域152可尝试将数据部分218、CRCb 210和ECC码220写入到存储域154的扇区(例如,扇区1)。存储控制器域152可尝试将数据部分222、间隔物字段224和ECC码226写入到存储域154的扇区(例如,扇区2)。存储控制器域152可尝试将数据部分228、CRCa 208和ECC码230写入到存储域154的扇区(例如,扇区3)。当然,在其它实施例中,将每个数据部分写入到顺序扇区可以不是必需的,并且扇区0、1、2和3可以是任意扇区,但为了说明而非限制的目的在图2中被描绘。
如果在这些写入操作期间有系统中断事件,则存储控制器域152可在随后读取操作(例如,由主机域150发出的读取命令)期间检测以下数据讹误情形:
情形1
假设数据部分212被部分提交(例如,到扇区0),例如,DataA 206是破损的。在存储控制器域152读取此扇区时,ECC逻辑120将解码ECC0 216并返回错误。因此,对于数据A和数据B的读取操作将产生读取错误(致命错误)。
情形2
假设数据部分212被正确提交到存储装置,但中断事件在数据部分218已开始写入到存储装置前发生。在此情形中,在存储控制器域152读取扇区0时,ECC逻辑120将未检测到对于此扇区的任何错误,但在存储控制器域152读取扇区1、2和3时,CRC逻辑120将解码在字段220和230的“陈旧”ECC码,并且由于扇区1中的数据是“陈旧的”,因此ECC码将返回读取错误。
情形3
假设数据0 212和数据1 218已被正确提交到存储装置,但中断事件在数据2(222)和数据3(228)已开始前发生。因此,CRCb 210被提交,并且数据B 204的CRC码是“陈旧的”。在此情形中,存储控制器域152(从扇区0、1、2和3)读取数据A 206和数据B,并且CRC码被重排序,使得“陈旧”CRCa被随附到数据A,并且“新”CRCb被随附到“陈旧”数据B。这样,每个CRC码将返回错误,因此降低或消除了静默数据讹误。
图3图示了根据本公开的各种实施例的一般化数据流示例300。继续参照图1,在图3的示例中,假设主机域150发出具有Z字节的长度的数据有效负载302的写入命令。存储控制器域152通常配置成将数据有效负载分段成多个段302-1、302-3、302-3、302-4、…、302-2N;其中Z>N并且N是整数。每个段302-1、302-3、302-3、302-4、…、302-2N具有数据长度Z/2N。存储控制器域152还配置成生成每个相应段302-1、302-3、302-3、302-4、…、302-2N的CRC码304-1、304-2、304-3、304-4、…、304-2N。存储控制器域152还配置成将每个CRC码指派到下一段,并且将最后CRC码指派到第一段(如通过箭头所指示的),由此能够实现静默数据讹误检测。存储控制器域152还配置成通过至少生成段的ECC码并将ECC码和(交换的)CRC码随附到每个扇区长度部分,来扇区化每个段。更通常地,并且假设存储装置的扇区长度小于每个段的长度,存储控制器域152还配置成将每个段划分成2X份,由此生成多个扇区长度部分,其各自具有(Z/2(N+X))的长度;其中2X ≥ 2N,并且X是整数。例如,段302-1可被划分成扇区长度部分306-1、306-2、…、306-2X。使用段302-1作为示例,在将段提交到存储装置前,存储控制器域152配置成将“交换的”CRC码310和ECC码310-2X随附到最后扇区长度部分306-2X,并且将空集(“填充物”308-1、308-2、…)和ECC码(310-1、310-2、…)随附到其余扇区长度部分。其余段可以类似方式来处理,如在图3中所描绘的。图3的一般化数据流能够实现如本文中所描述的、使用CRC码“移位”或“交换”的静默数据讹误的检测,以及如上所描述的、使用ECC码的其它写入错误的检测。
当然,图3的示例图示了CRC码到后面段的移位或指派,但在其它实施例中,CRC码可被移位到前面段。因此,例如,如果有4个数据段,则数据段1的CRC码可被移位到最后数据段,数据段2的CRC码可被移位到数据段1,并以此类推。在还有的其它实施例中,存储控制器域152可配置成通过“跳过”一个或多个数据段来移位CRC码。因此,例如,如果有8个数据段,则数据段1的CRC码可被移位到数据段3,数据段2的CRC码可被移位到数据段4,并以此类推,并且数据段7和8的CRC码可分别被移位到数据段1和2。当然,这些只是CRC移位的类型的示例,其可配置成由存储控制器域152来执行,并且一般来说,存储控制器域152通常配置成在多个数据段之中移位或指派CRC码,以确保无原始CRC码/数据段对作为原始对被提交到存储装置104。因此,在还有的其它实施例中,存储控制器域152可配置成在多个数据段之中随机移位或指派CRC码。
图4是根据本公开的各种实施例的操作的流程图400。具体地,流程图400图示了写入操作和CRC码交换以能够实现静默数据讹误检测。操作包括接收来自主机域的数据写入命令,数据写入命令具有长度为Z字节的数据有效负载,402。操作还包括将数据有效负载分段成2N个数据段;其中N是整数,404。操作还包括生成每个数据段的CRC码,406。操作还包括通过将每个CRC码指派到多个数据段之中的另一数据段来重排序CRC码,408。在一些实施例中,操作可还包括将每个数据段扇区化成2X个扇区长度部分;其中X是整数,并且每个扇区长度具有存储装置的扇区的字节长度,410。操作可还包括生成每个扇区长度部分的ECC码,412。操作可还包括生成除每个段的最后扇区长度部分外的段的每个扇区长度部分的空字段,414。操作可还包括汇编除每个段的最后扇区长度部分外的扇区长度部分和相应ECC码和空字段,416。操作可还包括汇编除每个段的最后扇区长度部分外的最后扇区长度部分、指派的CRC码和ECC码,418。操作可还包括尝试将每个扇区长度部分提交到存储装置的相应扇区,420。
图5是根据本公开的各种实施例的操作的流程图500。具体地,流程图500图示了读取操作和数据讹误(包括静默数据讹误)的检测。操作包括接收来自主机的读取命令,其中读取命令具有Z字节长度的预期数据有效负载,502。操作还包括确定数据有效负载的段的第一数量和每个段的扇区长度部分的第二数量,504。操作还包括从存储装置读取每个扇区长度部分,包括与每个段关联的CRC码和与每个扇区长度部分关联的ECC码,506。操作还包括通过重新指派每个段的每个CRC码来重排序每个段的CRC码,508。操作还包括解码每个扇区长度部分的ECC码并确定ECC码是否对于每个扇区长度部分都通过,510。如果ECC对于给定扇区长度部分未通过,则操作还包括返回读取失败,512。如果ECC码通过,则操作还包括操作还包括解码每个段的CRC码并确定ECC是否对于每个段都通过,514。如果CRC对于给定段未通过,则操作还包括返回读取失败,516。针对此操作的失败的CRC解码指示静默数据讹误。如果CRC和ECC均通过,则操作还包括向主机返回成功读取的结果,518。
图6是图示了与本公开的一个实施例相符的操作的流程图600。具体地,流程图600图示了用于能够实现静默数据讹误检测的CRC码交换。此实施例的操作包括响应于来自主机域的写入命令(其用于将数据有效负载写入到存储装置),将数据有效负载划分成多个数据段,602。操作还包括生成每个数据段的CRC码,604。操作还包括将每个CRC码指派到多个数据段之中的另一数据段,606。
图7是图示了与本公开的一个实施例相符的操作的流程图700。具体地,流程图700静默数据讹误检测。此实施例的操作包括响应于来自主机域的数据读取命令(其用于从存储装置读取数据有效负载),重新指派每个数据段的CRC码,702。操作还包括解码每个数据段的CRC码以确定数据完整性状态,704。
尽管图4-7的流程图图示了根据各种实施例的操作,但要理解的是,并非图4-7中所描绘的所有操作对于其它实施例是必需的。另外,本文中完全设想了在本公开的其它实施例中,图4、5、6和/或7中描绘的操作和/或本文中描述的其它操作可采用在任何附图中未明确示出的方式来组合,并且此类实施例可包括比在图4、5、6和/或7中所图示的操作更少或更多的操作。因此,指向在一个附图中未确切示出的特征和/或操作的权利要求被认为是在本公开的范畴和内容内。
本申请提供了如下的技术方案:
技术方案1. 一种存储控制器,包括:
主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;
循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及
CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
技术方案2. 如技术方案1所述的存储控制器,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
技术方案3. 如技术方案2所述的存储控制器,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
技术方案4. 如技术方案2所述的存储控制器,进一步包括错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
技术方案5. 如技术方案3所述的存储控制器,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
技术方案6. 如技术方案3所述的存储控制器,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的相应CRC码;
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述相应CRC码以确定第一数据完整性状态;以及
ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
技术方案7. 如技术方案1所述的存储控制器,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的相应CRC码;以及
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述相应CRC码以确定数据完整性状态。
技术方案8. 如技术方案1所述的存储控制器,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
技术方案9. 一种方法,包括:
响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;
生成每个数据段的循环冗余校验(CRC)码;以及
将每个CRC码指派到所述多个数据段之中的另一数据段。
技术方案10. 如技术方案9所述的方法,进一步包括:将每个段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
技术方案11. 如技术方案10所述的方法,包括将所述数据有效负载划分成2N份,并且将每个数据段划分成2(N+X)份;其中N和X是整数。
技术方案12. 如技术方案10所述的方法,进一步包括生成每个扇区长度部分的错误校正码(ECC)码。
技术方案13. 如技术方案12所述的方法,进一步包括:
响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的相应CRC码;以及
解码每个数据段的所述相应CRC码以确定第一数据完整性状态;以及
解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
技术方案14. 如技术方案11所述的方法,进一步包括:
生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及
针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
技术方案15. 如技术方案9所述的方法,进一步包括:
响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的相应CRC码;以及
解码每个数据段的所述相应CRC码以确定数据完整性状态。
技术方案16. 如技术方案9所述的方法,包括将所述数据有效负载划分成2N份;其中N是整数。
技术方案17. 一种存储系统,包括:
具有多个扇区的存储装置;以及
存储控制器,所述存储控制器包括:
主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到所述存储装置的写入命令,将所述数据有效负载划分成多个数据段;
循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及
CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
技术方案18. 如技术方案17所述的存储系统,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
技术方案19. 如技术方案18所述的存储系统,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
技术方案20. 如技术方案18所述的存储系统,进一步包括11包含错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
技术方案21. 如技术方案20所述的存储系统,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
技术方案22. 如技术方案19所述的存储系统,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,将每个数据段的相应CRC码重新指派到前面数据段;
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述相应CRC码以确定第一数据完整性状态;以及
ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
技术方案23. 如技术方案17所述的存储系统,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的相应CRC码;以及
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述相应CRC码以确定数据完整性状态。
技术方案24. 如技术方案17所述的存储系统,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
如本文中任何实施例中所使用的,术语“逻辑”可指配置成执行任何前述操作的应用、软件、固件和/或电路系统。软件可被实施为记录在非暂态计算机可读存储介质上的软件包、码、指令、指令集和/或数据。固件可被实施为在存储器装置中被硬译码(例如,非易失性)的码、指令或指令集、和/或数据。
如本文中任何实施例中所使用的,“电路系统”可例如单独地或以任何组合方式包括硬连线的电路系统、可编程电路系统、状态机电路系统、存储可由可编程电路系统执行的指令的逻辑和/或固件。电路系统可被实施为集成电路,诸如集成电路芯片,诸如专用集成电路(ASIC)等。在一些实施例中,电路系统可至少部分由执行与本文中描述的功能性对应的码和/或指令集(例如,软件、固件等)的处理器(例如,主机处理器电路系统106和/或控制器102)所形成,由此将通用处理器变换成专用处理环境以执行本文中描述的操作的一个或多个。在一些实施例中,存储控制器电路系统或其它系统的各种组件或电路系统可在芯片上系统(SoC)架构中被组合。
前述提供了示例系统架构和方法论,然而,对本公开的修改是可能的。处理器可包括一个或多个处理器核,并且可配置成执行系统软件。系统软件可包括例如操作系统。装置存储器可包括I/O存储器缓冲器,其配置成存储要由网络接口所传送或接收的一个或多个数据分组。
操作系统(OS)110可配置成管理系统资源和控制在例如系统100上运行的任务。例如,可使用Microsoft® Windows®、HP-UX®、Linux®或UNIX®来实现OS,但可使用其它操作系统。在另一示例中,可使用AndroidTM、iOS、Windows Phone®或BlackBerry®来实现OS。在一些实施例中,可将OS替换为虚拟机监视器(或管理程序),其可向在一个或多个处理单元上运行的各种操作系统(虚拟机)提供用于底层硬件的抽象的层。操作系统和/或虚拟机可实现协议栈。协议栈可执行一个或多个程序以处理分组。协议栈的示例是TCP/IP(传输控制协议/因特网协议)协议栈,包括用于处置(例如,处理或生成)要通过网络传送和/或接收的分组的一个或多个程序。
存储器108可各自包括以下类型的存储器中的一个或多个:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪速存储器、磁盘存储器、和/或光盘存储器。附加地或备选地,系统存储器可包括其它和/或以后开发的类型的计算机可读存储器。
本文中描述的操作的实施例可在其上已存储了指令的计算机可读存储装置上被实现,所述指令在由一个或多个处理器执行时执行方法。处理器可包括例如处理单元和/或可编程电路系统。存储装置可包括机器可读存储装置,其包括任何类型的有形、非暂态存储装置,例如包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何类型的盘;半导体装置,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态和静态RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEEPROM)、闪速存储器;磁卡或光卡;或适合于存储电子指令的任何类型的存储装置。
在一些实施例中,硬件描述语言(HDL)可用于针对本文中描述的各种逻辑和/或电路系统来指定电路和/或逻辑实现。例如,在一个实施例中,硬件描述语言可符合或兼容于超高速集成电路(VHSIC)硬件描述语言(VHDL),其可能够实现本文中描述的一个或多个电路和/或逻辑的半导体制造。VHDL可与IEEE标准1076-1987、IEEE标准1076.2、IEEE1076.1、VHDL-2006的IEEE草案3.0, VHDL-2008的IEEE草案4.0、和/或其它版本的IEEE VHDL标准和/或其它硬件描述标准。
在一些实施例中,Verilog硬件描述语言(HDL)可用于针对本文中描述的各种逻辑和/或电路系统来指定电路和/或逻辑实现。例如,在一个实施例中,HDL可符合或兼容于IEEE标准62530-2011:SystemVerilog-日期为2011年7月7日的统一硬件设计、规范、和鉴定语言;IEEE Std 1800TM-2012:用于SystemVerilog的IEEE标准-2013年2月21日发布的统一硬件设计、规范、和鉴定语言;IEEE标准1364-2005:用于Verilog硬件描述语言的IEEE标准,日期为2006年4月18日;和/或Verilog HDL和/或SystemVerilog标准的其它版本。
示例
本公开的示例包括诸如方法、用于执行方法的动作的部件、装置、或与带有多个间接单元粒度的存储系统有关的设备或系统的主题,如下所讨论的。
示例1.根据此示例,提供有一种存储控制器。所述存储控制器包括:主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
示例2.此示例包括示例1的元素,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
示例3.此示例包括示例2的元素,进一步包括包含错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
示例4.此示例包括示例3的元素,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
示例5.此示例包括示例1的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定数据完整性状态。
示例6.此示例包括示例3的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的每个CRC码;CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定第一数据完整性状态;以及ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
示例7.此示例包括示例1的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
示例8.此示例包括示例2的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
示例9.根据此示例,提供有一种方法。所述方法包括:通过主机数据分段逻辑,响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;通过循环冗余校验(CRC)编码逻辑来生成每个数据段的CRC码;以及通过CRC重排序编码逻辑将每个CRC码指派到所述多个数据段之中的另一数据段。
示例10. 此示例包括示例9的元素,进一步包括通过段扇区化逻辑将每个段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
示例11. 此示例包括示例10的元素,进一步包括通过错误校正码(ECC)编码逻辑来生成每个扇区长度部分的ECC码。
示例12. 此示例包括示例11的元素,进一步包括:生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
示例13. 此示例包括示例9的元素,进一步包括:响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及通过CRC解码逻辑来解码每个数据段的所述CRC码以确定数据完整性状态。
示例14. 此示例包括示例11的元素,进一步包括:通过CRC重排序解码逻辑,响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及通过CRC解码逻辑来解码每个数据段的所述CRC码以确定第一数据完整性状态;以及通过ECC解码逻辑来解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
示例15. 此示例包括示例9的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
示例16. 此示例包括示例10的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
示例17. 此示例提供了一种存储系统。所述存储系统包括具有多个扇区的存储装置;以及存储控制器,所述存储控制器包括:主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到所述存储装置的写入命令,将所述数据有效负载划分成多个数据段;循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
示例18. 此示例包括示例17的元素,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
示例19. 此示例包括示例18的元素,进一步包括包含错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
示例20. 此示例包括示例19的元素,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
示例21. 此示例包括示例17的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定数据完整性状态。
示例22. 此示例包括示例19的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的每个CRC码;CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定第一数据完整性状态;以及ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
示例23. 此示例包括示例17的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
示例24. 此示例包括示例18的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
示例25. 根据此示例,提供有一种在其上已存储了指令的计算机可读存储装置,所述指令在由一个或多个处理器执行时,引起以下操作,所述操作包括:响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;生成每个数据段的CRC码;以及将每个CRC码指派到所述多个数据段之中的另一数据段。
示例26. 此示例包括示例25的元素,其中在由一个或多个处理器执行时的所述指令引起以下附加操作,所述操作包括将每个段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
示例27. 此示例包括示例26的元素,其中在由一个或多个处理器执行时的所述指令引起以下附加操作,所述操作包括生成每个扇区长度部分的ECC码。
示例28. 此示例包括示例27的元素,其中在由一个或多个处理器执行时的所述指令引起以下附加操作,所述操作包括:生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
示例29. 此示例包括示例27的元素,其中在由一个或多个处理器执行时的所述指令引起以下附加操作,所述操作包括:响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及解码每个数据段的所述CRC码以确定第一数据完整性状态;以及解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
示例30. 此示例包括示例25的元素,其中在由一个或多个处理器执行时的所述指令引起以下附加操作,所述操作包括:响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及解码每个数据段的所述CRC码以确定数据完整性状态。
示例31. 此示例包括示例25的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
示例32. 此示例包括示例26的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
示例33. 此示例包括示例1的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到后面数据段和将最后数据段的所述CRC码指派到第一数据段。
示例34. 此示例包括示例1的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到前面数据段和将第一数据段的所述CRC码指派到最后数据段。
示例35. 此示例包括示例1的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码随机指派到另一数据段。
示例36. 此示例包括示例9的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到后面数据段和将最后数据段的所述CRC码指派到第一数据段。
示例37. 此示例包括示例9的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到前面数据段和将第一数据段的所述CRC码指派到最后数据段。
示例38. 此示例包括示例9的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码随机指派到另一数据段。
示例39. 此示例包括示例17的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到后面数据段和将最后数据段的所述CRC码指派到第一数据段。
示例40. 此示例包括示例17的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到前面数据段和将第一数据段的所述CRC码指派到最后数据段。
示例41. 此示例包括示例17的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码随机指派到另一数据段。
示例42. 此示例包括示例25的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到后面数据段和将最后数据段的所述CRC码指派到第一数据段。
示例43. 此示例包括示例25的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到前面数据段和将第一数据段的所述CRC码指派到最后数据段。
示例44. 此示例包括示例25的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码随机指派到另一数据段。
示例45. 此示例提供了一种存储系统。所述存储系统包括:
存储域,所述存储域包括具有包括多个扇区的存储介质的存储装置;以及
存储控制器域,所述存储控制器域包括:
主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;
循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及
CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
示例46. 此示例包括示例45的元素,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
示例47. 此示例包括示例46的元素,进一步包括包含错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
示例48. 此示例包括示例47的元素,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
示例49. 此示例包括示例45的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定数据完整性状态。
示例50. 此示例包括示例47的元素,进一步包括:CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的每个CRC码;CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定第一数据完整性状态;以及ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
示例51. 此示例包括示例45的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
示例52. 此示例包括示例46的元素,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
示例53. 此示例包括示例45的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到后面数据段和将最后数据段的所述CRC码指派到第一数据段。
示例54. 此示例包括示例45的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码指派到前面数据段和将第一数据段的所述CRC码指派到最后数据段。
示例55. 此示例包括示例45的元素,其中将每个CRC码指派到另一数据段包括将每个CRC码随机指派到另一数据段。
示例56. 此示例包括系统,所述系统包括包含布置成执行示例9到16中任一项或示例36-38中任一项的所述方法的至少一个装置。
示例57. 此示例包括用于执行示例9到16中任一项或示例36-38中任一项的所述方法的部件。
示例58. 此示例包括在其上已存储了指令的计算机可读存储装置,所述指令在由一个或多个处理器执行时引起以下操作,所述操作包括根据示例9到16中任一项或示例36-38中任一项的所述方法。
本文中已采用的术语和表达被用作描述的术语而不是限制的术语,并且在使用此类术语和表达时,无意排除所示和所述的特征(或其部分)的任何等效物,并且可认识到在权利要求的范畴内各种修改是可能的。相应地,权利要求旨在覆盖所有此类等效物。
各种特征、方面和实施例已在本文中被描述。如由本领域技术人员将理解的,特征、方面和实施例易受相互的组合以及变化和修改的影响。因此,本公开应被视为涵盖此类组合、变化和修改。
Claims (25)
1.一种存储控制器,包括:
主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;
循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及
CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
2.如权利要求1所述的存储控制器,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
3.如权利要求2所述的存储控制器,进一步包括错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
4.如权利要求3所述的存储控制器,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
5.如权利要求1所述的存储控制器,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定数据完整性状态。
6.如权利要求3所述的存储控制器,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的每个CRC码;
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定第一数据完整性状态;以及
ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
7.如权利要求1所述的存储控制器,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
8.如权利要求2所述的存储控制器,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
9.一种方法,包括:
通过主机数据分段逻辑,响应于来自主机域的、用于将数据有效负载写入到存储装置的写入命令,将所述数据有效负载划分成多个数据段;
通过循环冗余校验(CRC)编码逻辑来生成每个数据段的CRC码;以及
通过CRC重排序编码逻辑将每个CRC码指派到所述多个数据段之中的另一数据段。
10.如权利要求9所述的方法,进一步包括:通过段扇区化逻辑将每个段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
11.如权利要求10所述的方法,进一步包括通过错误校正码(ECC)编码逻辑来生成每个扇区长度部分的ECC码。
12.如权利要求11所述的方法,进一步包括:
生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及
针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
13.如权利要求9所述的方法,进一步包括:
响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及
通过CRC解码逻辑来解码每个数据段的所述CRC码以确定数据完整性状态。
14.如权利要求11所述的方法,进一步包括:
通过CRC重排序解码逻辑,响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及
通过CRC解码逻辑来解码每个数据段的所述CRC码以确定第一数据完整性状态;以及
通过ECC解码逻辑来解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
15.如权利要求9所述的方法,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
16.如权利要求10所述的方法,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
17.一种用于检测静默数据讹误的存储系统,包括:
具有多个扇区的存储装置;以及
存储控制器,所述存储控制器包括:
主机数据分段逻辑,所述主机数据分段逻辑用于响应于来自主机域的、用于将数据有效负载写入到所述存储装置的写入命令,将所述数据有效负载划分成多个数据段;
循环冗余校验(CRC)编码逻辑,所述循环冗余校验(CRC)编码逻辑用于生成每个数据段的CRC码;以及
CRC重排序编码逻辑,所述CRC重排序编码逻辑用于将每个CRC码指派到所述多个数据段之中的另一数据段。
18.如权利要求17所述的存储系统,进一步包括段扇区化逻辑,所述段扇区化逻辑用于将每个数据段划分成多个扇区长度部分;其中每个扇区长度部分具有基于所述存储装置的扇区大小的位长度。
19.如权利要求18所述的存储系统,进一步包括11包含错误校正码(ECC)编码逻辑,所述错误校正码(ECC)编码逻辑用于生成每个扇区长度部分的ECC码。
20.如权利要求19所述的存储系统,其中所述段扇区化逻辑进一步用于生成除段的最后扇区长度部分外的每个扇区长度部分的空字段,并汇编所述空字段和每个扇区长度部分的所述ECC码;以及进一步用于针对所述段的最后扇区长度部分来汇编所述ECC码和所指派的CRC码。
21.如权利要求17所述的存储系统,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,重新指派每个数据段的所述CRC码;以及
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定数据完整性状态。
22.如权利要求19所述的存储系统,进一步包括:
CRC重排序解码逻辑,所述CRC重排序解码逻辑用于响应于来自所述主机域的、用于从所述存储装置读取所述数据有效负载的数据读取命令,将每个数据段的所述CRC码重新指派到前面数据段;
CRC解码逻辑,所述CRC解码逻辑用于解码每个数据段的所述CRC码以确定第一数据完整性状态;以及
ECC解码逻辑,所述ECC解码逻辑用于解码每个扇区长度部分的所述ECC码以确定第二数据完整性状态。
23.如权利要求17所述的存储系统,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;其中N是整数。
24.如权利要求18所述的存储系统,其中所述主机数据分段逻辑用于将所述数据有效负载划分成2N份;并且其中所述段扇区化逻辑用于将每个数据段划分成2(N+X)份;其中N和X是整数。
25.一种在其上已存储了指令的计算机可读存储装置,所述指令在由一个或多个处理器执行时,引起以下操作,所述操作包括:根据权利要求9到16中任一项的所述方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/699950 | 2017-09-08 | ||
US15/699,950 US10877842B2 (en) | 2017-09-08 | 2017-09-08 | Detecting silent data corruption for mass storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109471751A true CN109471751A (zh) | 2019-03-15 |
Family
ID=63363833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811044115.5A Pending CN109471751A (zh) | 2017-09-08 | 2018-09-07 | 针对海量存储装置来检测静默数据讹误 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10877842B2 (zh) |
EP (1) | EP3454217B1 (zh) |
CN (1) | CN109471751A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200106B2 (en) | 2019-08-12 | 2021-12-14 | Advanced Micro Devices, Inc. | Data integrity for persistent memory systems and the like |
US12026379B2 (en) * | 2022-03-14 | 2024-07-02 | Western Digital Technologies, Inc. | Data storage device and method for host-initiated transactional handling for large data set atomicity across multiple memory commands |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430447A (en) * | 1993-08-23 | 1995-07-04 | Texas Instruments Deutschland Gmbh | Protection against manipulation of batteryless read/write transponders |
US5844918A (en) * | 1995-11-28 | 1998-12-01 | Sanyo Electric Co., Ltd. | Digital transmission/receiving method, digital communications method, and data receiving apparatus |
JPH09305328A (ja) | 1996-05-13 | 1997-11-28 | Fujitsu Ltd | ディスクアレイ装置 |
US8826093B2 (en) * | 2005-01-19 | 2014-09-02 | Qualcomm Incorporated | Power saving method for coded transmission |
EP2026470A1 (en) * | 2007-08-17 | 2009-02-18 | Panasonic Corporation | Running cyclic redundancy check over coding segments |
KR101048452B1 (ko) * | 2007-10-10 | 2011-07-11 | 삼성전자주식회사 | 무선통신시스템에서 하이브리드 에이알큐 수행 장치 및방법 |
WO2009145474A2 (ko) * | 2008-04-02 | 2009-12-03 | 엘지전자주식회사 | 무선통신 시스템에서 harq 수행 방법 |
KR20100008849A (ko) * | 2008-07-17 | 2010-01-27 | 삼성전자주식회사 | 통신 시스템에서 순환중복검사 방법 및 장치 |
US9026887B2 (en) * | 2012-03-15 | 2015-05-05 | Micron Technology, Inc. | Physical page, logical page, and codeword correspondence |
US9292379B2 (en) | 2013-09-28 | 2016-03-22 | Intel Corporation | Apparatus and method to manage high capacity storage devices |
EP3202045A1 (en) * | 2014-10-03 | 2017-08-09 | Telefonaktiebolaget LM Ericsson (publ) | Method and device for calculating a crc code in parallel |
US9712187B2 (en) * | 2014-12-05 | 2017-07-18 | Samsung Electronics Co., Ltd. | SC-LDPC codes for wireless communication systems: framework and zigzag-window decoder |
US10104631B2 (en) * | 2015-06-17 | 2018-10-16 | Hughes Network Systems, Llc | Unique word (UW) based multiple access signal acquisition technique |
US20170063493A1 (en) * | 2015-08-25 | 2017-03-02 | Signalchip Innovations Private Limited | Methods and circuits for performing cyclic redundancy check (crc) of an input data stream |
US10367530B2 (en) * | 2016-01-14 | 2019-07-30 | Qualcomm Incorporated | Unified code block segmentation providing a cyclic redundancy check for low density parity check code codewords |
-
2017
- 2017-09-08 US US15/699,950 patent/US10877842B2/en active Active
-
2018
- 2018-08-02 EP EP18187146.8A patent/EP3454217B1/en active Active
- 2018-09-07 CN CN201811044115.5A patent/CN109471751A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3454217A1 (en) | 2019-03-13 |
EP3454217B1 (en) | 2020-04-08 |
US10877842B2 (en) | 2020-12-29 |
US20190079827A1 (en) | 2019-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10218789B2 (en) | Erasure correcting coding using temporary erasure data | |
CN101427323B (zh) | 读取非易失性计算机存储器的系统和方法 | |
CN103119569B (zh) | 基于存储条的非易失性多级存储器操作 | |
US9465552B2 (en) | Selection of redundant storage configuration based on available memory space | |
US10409500B2 (en) | Multiple indirection granularities for mass storage devices | |
JP6312698B2 (ja) | ソリッドステートドライブ内の下位ページデータ復旧を行うシステム及び方法 | |
US8464137B2 (en) | Probabilistic multi-tier error correction in not-and (NAND) flash memory | |
US10153046B1 (en) | Non-volatile memory with backing up of programmed data | |
US10423345B2 (en) | Devices, systems, and methods for increasing endurance on a storage system having a plurality of components using adaptive code-rates | |
US9270296B1 (en) | Method and system for soft decoding through single read | |
TW201702878A (zh) | 具有不同同位區的記憶體裝置 | |
US20110252187A1 (en) | System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory | |
US9239757B2 (en) | Method and apparatus for relocating data in non-volatile memory | |
CN109726142B (zh) | 回收坏块的非易失性存储系统 | |
TWI720246B (zh) | 資料儲存裝置以及其操作方法 | |
CN108958961B (zh) | 数据储存装置以及数据错误管理方法 | |
KR20110021778A (ko) | 에러 정정을 지원하기 위해 프로그래밍 시간 정보를 사용하는 방법 | |
US11107518B2 (en) | Extending operating temperature of storage device | |
US20160132384A1 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
CN109471751A (zh) | 针对海量存储装置来检测静默数据讹误 | |
US9098391B2 (en) | Memory system and method of operating memory system using reconstructed data | |
CN109714062A (zh) | 执行迭代解码的解码器和使用该解码器的存储设备 | |
CN112748870A (zh) | 存储器系统、存储器控制器及操作存储器控制器的方法 | |
CN110119247A (zh) | 非易失性存储器 | |
US9436547B2 (en) | Data storing method, memory control circuit unit and memory storage device |
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 |