一种信息处理方法及装置、电子设备的制造方法

文档序号:10534636阅读:391来源:国知局
一种信息处理方法及装置、电子设备的制造方法
【专利摘要】本发明公开了一种信息处理方法及装置、电子设备,其中:所述方法包括:判断第一译码器译码第一数据是否失败,得到第一判断结果;当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据,并释放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子数据为所述第一数据中已经译码成功的数据;判断是否利用重读译码器重读所述第一数据,得到第二判断结果;当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码数据;当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所述重读缓存器中。
【专利说明】
_种信息处理方法及装置、电子设备
技术领域
[0001] 本发明涉及电子技术,尤其涉及一种信息处理方法及装置、电子设备。
【背景技术】
[0002] 固态硬盘(SSD,又称固态存储器)是基于闪存单元的数据存储设备,固态硬盘上的 每个数据位保存在由浮栅晶体管制成的闪存单元里,SSD整个都是由电子组件制成的,没有 像硬盘那样的移动或者机械的部分。
[0003] 在浮栅晶体管中,使用电压来实现每个位的读写和擦除,写晶体管有两个类型: N0R闪存和Nand闪存。在本发明实施例中仅讨论Nand闪存,Nand闪存模块的一个重要特征 是,闪存单元是损耗性的,因此它们有一个寿命。实际上,晶体管是通过保存电子来实现保 存比特信息的。在每个P/E循环(Program/Erase,Program在这表示写)中电子可能被晶体管 误捕,一段是时间以后,大量电子被捕获会使得闪存单元不可用。Nand闪存模块的另一个重 要特征是,Nand的访问方式是读写以页为单位,擦除以块为单位。
[0004] 每个单元有一个最大的P/E循环数量,当闪存单元被认为有缺陷后,Nand闪存被损 耗而拥有一个有限的寿命,不同类型的Nand闪存有不同的寿命。目前业界中的Nand闪存单 元类型有:单层单元(SLC),这种的晶体管只能存储一个比特但寿命很长。多层单元(MLC), 这种的晶体管可以存储2个比特,但是会导致增加延迟时间和相对于SLC减少寿命。三层单 元(TLC),这种的晶体管可以保存3个比特,但是会有更高的延迟时间和更短的寿命。
[0005] 由以上可以看出,Nand flash内存是flash内存的一种,随着其存储密度的提升, Nand flash除了寿命会变短、延迟时间会变长外,Nand flash的数据出错的概率也随之增 加。为了对Nand flash中数据纠错,就需要对写入flash中的数据进行编码保护,在TLC中 往往采用纠错能力较强的LDPC编码。但是LDPC是概率译码,也就是说会有无法正确译码的 现象出现,所以当译码发生错误时,就需要采取其他措施,例如重读Nand flash,通过读取 上下页对错误数据进行纠正,或者软解码等方案增加成功译码的概率,因此,现有技术中的 提供的方案都会增加时间延迟。

【发明内容】

[0006] 有鉴于此,本发明实施例为解决现有技术中存在的问题而提供一种信息处理方法 及装置、电子设备,能够减少时间延迟。
[0007] 本发明实施例的技术方案是这样实现的:
[0008] 第一方面,本发明实施例提供一种信息处理方法,所述方法包括:
[0009] 判断第一译码器译码第一数据是否失败,得到第一判断结果;
[0010] 当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数 据,并释放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一 子数据为所述第一数据中已经译码成功的数据;
[0011] 判断是否利用重读译码器重读所述第一数据,得到第二判断结果;
[0012] 当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读缓存器中是 否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码数据;
[0013] 当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所 述重读缓存器中。
[0014] 第二方面,本发明实施例提供一种信息处理装置,所述装置包括第一判断单元、第 一保存单元、第二判断单元、第三判断单元和第二保存单元,其中:
[0015] 所述第一判断单元,用于判断第一译码器译码第一数据是否失败,得到第一判断 结果;
[0016] 所述第一保存单元,用于当所述第一判断结果表明所述第一译码器译码第一数据 失败时,保存第一译码数据,并释放所述第一译码器,其中所述第一译码数据为第一子数 据译码后的数据,所述第一子数据为所述第一数据中已经译码成功的数据;
[0017] 所述第二判断单元,用于判断是否利用重读译码器重读所述第一数据,得到第二 判断结果;
[0018] 所述第三判断单元,用于当第二判断结果表明利用重读译码器重读所述第一数据 时,判断重读缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码 器存储译码数据;
[0019] 所述第二保存单元,用于当所述第三判断结果表明重读缓存器未被占用时,将所 述第一译码数据保存在所述重读缓存器中。
[0020] 第三方面,本发明实施例提供一种电子设备,所述固态存储器SSD,所述固态存储 器包括译码器、缓存器和SSD控制器,其中:
[0021 ] 所述译码器至少包括第一译码器和重读译码器;
[0022] 所述缓存器至少包括重读缓存器;
[0023] 所述SSD控制器,用于判断第一译码器译码第一数据是否失败,得到第一判断结 果;当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据,并 释放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子数 据为所述第一数据中已经译码成功的数据;判断是否利用重读译码器重读所述第一数据, 得到第二判断结果;当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读 缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码 数据;当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所述 重读缓存器中。
[0024]本发明实施例提供一种信息处理方法及装置、电子设备,判断第一译码器译码第 一数据是否失败,得到第一判断结果;当所述第一判断结果表明所述第一译码器译码第一 数据失败时,保存第一译码数据,并释放所述第一译码器,其中所述第一译码数据为第一子 数据译码后的数据,所述第一子数据为所述第一数据中已经译码成功的数据;判断是否利 用重读译码器重读所述第一数据,得到第二判断结果;当第二判断结果表明利用重读译码 器重读所述第一数据时,判断重读缓存器中是否被占用,得到第三判断结果,所述重读缓存 器用于所述重读译码器存储译码数据;当所述第三判断结果表明重读缓存器未被占用时, 将所述第一译码数据保存在所述重读缓存器中;如此,能够减少时间延迟。
【附图说明】
[0025] 图1-1为相关技术中SSD控制器的结构示意图一;
[0026] 图1-2为相关技术中SSD控制器的结构示意图二;
[0027] 图1-3为本发明实施例中SSD控制器的结构示意图;
[0028]图1-4为本发明实施例一信息处理方法的实现流程示意图;
[0029]图2为本发明实施例四信息处理方法的实现流程示意图;
[0030]图3为本发明实施例五信息处理装置的组成结构示意图。
【具体实施方式】
[0031]下面简要的介绍一下LDPC纠错算法,LDPC纠错算法是利用LDPC(低密度奇偶校验) 码进行纠错的一种算法,其中LDPC码又称为纠错码,用于检测数据从某个点传输到另个点 之间是否出现错误。LDPC纠错算法包括两个阶段,第一个阶段称为LDPC硬数据(硬信息)解 码阶段,第二个阶段称为LDPC软数据(软信息)解码阶段,当LDPC硬数据解码阶段失败后,那 么LDPC纠错就会进入LDPC软数据解码阶段。
[0032]下面先来介绍一下LDPC硬数据解码阶段,因为纠错码包含校正数据,所以当接收 端检测到发送端传输过来的数据是错误的时候,接收端可以有足够的信息去修复这些错 误,而不用通知发送端重新发送数据。闪存随着P/E(编程/擦除次数)的提高错误率会越来 越大,当错误率超过主控纠错能力的极限后就会出现数据错误。当前采用TLC的SSD产品,假 设从目前的BCH码改成LDPC码后,P/E从1000提高到1500,这样一来就可以实现耐久度50% 的提高,相对的由于纠错能力更强,掉电后数据保存期也延长了。
[0033] SSD采用LDPC码后的时间延迟主要有如下3个地方产生:1)LDPC编码过程;2)通过 LDPC解码首次就读出闪存上数据的过程;3)通过LDPC解码多次后读出闪存上数据的过程。 一般支持LDPC码的主控都会含有硬件加速模块,外加高效利用回写缓存即可有效的把上面 第1)点的延迟给隐藏起来。其实延迟的问题主要是来自第2)点和第3)点。采用LDPC码后SSD 中随机读取延迟主要由3个因素组成:闪存传输时间(t_trans)、闪存读取时间(t_read)和 LDPC解码时间(t_ldpc),其中闪存传输时间是固定不变的,只有闪存读取时间和LDPC解码 时间是会出现变化的。
[0034]闪存读取时间取决于Block中Page的索引,有些Page读取快,有些Page则慢,换句 话说,闪存读取时间不受纠错码类型的影响,也就是说用LDPC纠错码或是BCH纠错码并没区 另lj 1DPC解码时间取决于闪存的错误数和LDPC码参数设置造成的迭代次数多少,一般会给 迭代次数设置一个上限,就可以在超过这个上限后进入下一步操作,防止无限循环下去;闪 存错误数是随着P/E提高而增加,而LDPC码参数也会影响迭代次数,进而影响性能。
[0035] LDPC硬数据解码后,如果纠错依然失败的话,那么就会进入第二阶段一 LDPC软数 据解码阶段。在读取闪存时,结果只有1或者〇,由于此时并不知道这些〇和1中哪个是有效数 据,哪些是可疑数据(可能错误的),因此对这些数据进行初次LDPC解码就叫做硬数据解码。 如果硬数据LDPC解码失败,那么对这块SSD来说,一般有3个选择:第一种选择是直接返回 "不可恢复的读错误",这当然不是用户希望看到的;那么第二种选择就是,如果SSD内部有 类似RAID的保护模式,可以利用该功能X0R并恢复出用户数据;而第三种选择是依靠搜集软 数据,再尝试用这些软数据对数据进行软数据LDPC解码(一般来说都采用第三种),而这类 LDPC软数据解码机制在之前的较为低等级的BCH码上是不存在的。
[0036] LDPC软数据解码阶段主要分成三部分:1)重读策略;2)软数据的构建;3) LDPC软数 据解码。
[0037] 重读策略不是去读取数据本身(之前硬数据解码已经不能纠错,就不用浪费力气 再去读硬数据),而是去读取这个数据的元数据,把这些元数据作为软数据构建的基础。如 何用最少的读取次数搜集出最有帮助的元数据成为了关键,因为每读一次就增加了一次延 迟。重读策略的每次读取都会返回与等着被纠错的数据相关的元数据,意味着每次读取都 提供了更多的物理信息可以参考,然后需要做的是把这些〇或者1映射成LDPC解码中的软数 据,这个映射需要对闪存本身和所采用的LDPC代码具有相当的认知(该过程中称为软数据 的构建)。软数据解码中最后一个步骤就是将代码中每一位的对数似然比(Log-Likelihood Ratio,LLR)传入LDPC解码器逻辑中,期望着这次实现的解码比原有的硬数据解码更为有 效,让SSD能够返回正确的用户数据;然后马上将该数据移动至SSD内较为安全的Page(页) 里,避免下次数据请求遇到相同的问题。
[0038]从以上可以看出,Nand flash内存是flash内存的一种,随着其存储密度的提升, Nand flash中数据出错的概率也随之增加。为了对Nand flash中数据纠错,就需要对写入 Nand flash中的数据进行编码保护,在TLC中往往采用纠错能力较强的LDPC编码。但是LDPC 是概率译码,也就是说会有无法正确译码的现象出现,所以当译码发生错误时,就需要采取 其他措施,例如重读Nand flash,通过重读上下页对错误数据进行纠正,或者软解码等方案 增加成功译码的概率。
[0039] SSD控制器(又称为Nand flash控制器)主要实现对Nand flash读写的控制,纠错 编码(ECC)模块在SSD控制器中的位置如图1-1所示,ECC控制模块是进出Nand flash设备的 必经通道;因此,ECC控制模块能否进行有效控制会影响整个Nand flash控制器的实现效 率。
[0040] 由于一个Nand flash控制器下面会挂多个Nand flash设备,所以ECC控制模块就 需要对多个Nand flash通道进行有效控制。ECC控制模块匹配多个flash通道最简单的方式 是为每个通道配置一个ECC控制模块,但是像上文中提到,TLC中纠错编码采用LDPC码,但是 LDPC译码实现复杂度较高、占用硬件资源较多,当flash通道较多时无法为每个通道配置一 个ECC控制模块。对于8通道的Nand flash控制器,可以给两个通道配置一个ECC控制模块 (如图卜2所示,在图1-2中的Prime retry decoder作为一个ECC模块),或者4个通道配置 一个ECC控制模块。图1-2为相关技术SSD控制器的组成结构示意图二,如下图1-2所示,正常 译码或者进行re-read时通过prime retry decoder进行解码,当re-read依然失败后再对 flash进行其他处理,例如此时通过deep retry decoder进行译码。在图1-2中,一个主重读 译码器(prime retry decoder,在本发明实施例中又称为第一译码器)可以看作是一个ECC 模块,而深度重读译码器(deep retry decoder,在本发明实施例中又称为重读译码器)可 以看作是独立的ECC模块。
[0041]从图1-2中可以看出,由于一个ECC控制模块匹配多个通道,所以当其中一个通道 译码发生错误,需要重读或者进行软解码时会就对其他通道造成影响。传统的做法在某个 通道译码发生错误需要重读时,会一直占用prime retry decoder,直到软件完成对该通道 的重读。或者发生错误时通知软件,prime retry decoder丢弃译码的数据,等软件发送命 令再次对该通道进行重读或者进行deep retry decoder。在上述两种的情况下,第一种是 造成了通道阻塞,因为软件不一定能够马上响应错误中断,从译码发生错误到重读之间需 要等待之间,此时虽然译码器空闲,但无法对其它页读出的数据进行译码,从而造成了资源 的浪费。而第二种虽然没有阻塞通路,但是一个最小读单元通常包含多个码字,有的码字能 够译码正确,当某个码字发生错误丢弃整页数据,re-read时还需要对上次正确译码的码字 再进行译码,造成了不必要的延时。而在进行deep retry decoder译码时,因为8个通道共 用一个译码器,所以存在多个通同要进行deep retry decoder的状况,此时就需要软件通 过译码返回的状态维护进行deep retry decoder的链表,增加了对软件调度的复杂度以及 软硬件交互延时。
[0042] 针对上述问题,在本发明以下的实施例中,将提供了一种Nand flash控制器中对 错误码字进行重读译码的调度方案,通过硬件的调度实现重读(re-read)和深度重试(deep retry)的自动调度。为了保存与译码错误码字在同一次读操作中译码正确的码字,在本发 明实施例对图卜2进行了改进,改进后ECC控制模块如图1-3所示,为每个prime decoder配 置一个重读缓存器(retry buffer),retry buffer同时能够在码字等待deep retry时对数 据进行缓存。
[0043] 从前面的叙述可知,译码过程可分为正常译码、re-read译码以及deep retry软译 码。当正常译码发生错误时,prime decoder会记录错误的描述符编号(descriptor ID)以 及码字的状态信息,如表1所示,fai 1 ID记录发生错误的描述符编号,status代表对有错误 descriptor的处理状态,status = 0,表示正常读取,status = 1代表进入re-read状态, status = 2代表进入等待deep retry队列,当该页开始进行软译码时,status置为0。在 status的3种状态中只有当status = 0时才代表retry buffer被释放。cwl-cwn分别记录当 前译码页面中错误的码字号,1代表有错误,0代表没有错误,retry时只对有错误的码字进 行译码。
[0045] 参见图2,从图2中可以看出ECC模块返回的状态主要有以下几种:1) 一页全部译码 成功;2)译码有错误,但是因为retry buffer被占用,暂时无法进hard retry操作;3)译码 有错误,并且已将错误的页面数据搬移到retry buffer,等待re-read命令;4)re_read错 误,且可进行deep retry译码。
[0046] 参见图2中的步骤S401至步骤S403,当译码发生错误,需要进行re-read译码时, ECC模块要把要进行re-read的页中译码输出的数据搬移到retry buffer中。如果retry buffer被占用,则丢弃原来译码数据,并报告软件译码失败,且没有进行retry。参见图2中 的步骤S404至步骤S410,在re-read状态下,那么如果接收descriptor id等于fail id,译 码会进入retry流程,当retry成功或者retry次数达到最大时,status被置为0,同时retry buffer也被释放。
[0047] 参见图2中的步骤S411至步骤S415,当re-read译码仍然失败,那么ECC模块将 retry buffer中的数据搬移到deep retry的page buffer里进行deep retry。如果deep retry的page buffer被占用,那么该页数据会进入deep retry的等待队列,等待队列用一 个FIFO实现。每当需要进行deep retry时,将表1中的内容写到FIFO中。每当deep retry译 码器完成一页解码时会读FIFO,从中取出需要进行deep retry的fail ID,并且将ID号通 知软件。deep retry译码器收到与fail ID相同的descriptor时,则会对发生错误的码字进 行deep retry操作。
[0048] 利用本发明实施例提供的技术方案具有以下优势:(1)当译码发生错误时只保存 发生错误的描述符编号(descriptor ID,又称为描述符的标识信息),并释放译码器,只有 再次接收到与发生错误描述符相同的描述符时再进行re-read译码操作。(2)为每个prime decoder配置一个retry buffer,用来缓存当某个码字译码发生错误时与该码字同时读出 的其他正确译码的码字,从而当进行re-read时不需要再对正确码字进行译码。(3)硬件自 动维护需要进行deep retry译码的命令链表,当发现deep retry译码器空闲时通知软件可 进行deep retry译码,从而降低了软硬件交互的延迟。
[0049] 下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
[0050] 实施例一
[0051]为了解决前述的技术问题,本发明实施例提供一种信息处理方法,该方法应用于 电子设备中的存储器的控制器,本发明实施例中的电子设备至少处理器、存储器,这里,存 储器主要是指固态存储器(SSD),SSD的存储介质为Nand。
[0052]图1-4为本发明实施例一信息处理方法的实现流程示意图,如图1-4所示,该信息 处理方法包括:
[0053]步骤S101,判断第一译码器译码第一数据是否失败,得到第一判断结果;
[0054] 这里,所述第一译码器可以是图1_3中的prime retry decoder。
[0055]步骤S102,当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存 第一译码数据,并释放所述第一译码器;
[0056]这里,所述第一译码数据为第一子数据译码后的数据,所述第一子数据为所述第 一数据中已经译码成功的数据;
[0057] 这里,步骤S101和步骤S102属于正常译码阶段。所述保存第一译码数据可以是将 所述第一译码数据保存在Nand flash中。
[0058]步骤S103,判断是否利用重读译码器重读所述第一数据,得到第二判断结果;
[0059] 这里,所述重读译码器可以为图1-3中的prime retry decoder,图1-3中的deep retry decoder。
[0060] 步骤S104,当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读 缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码 数据;
[0061] 这里,所述重读缓存器可以是指图1-3中的retry buffer。
[0062]步骤S105,当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数 据保存在所述重读缓存器中。
[0063]在本发明的其他实施例中,所述方法还包括:步骤S106,当所述第三判断结果表明 重读缓存器被占用时,丢弃所述第一译码数据,并输出译码失败信息。
[0064] 实施例二
[0065]基于前述的实施例,本发明实施例提供一种信息处理方法,该方法应用于电子设 备中的存储器的控制器,本发明实施例中的电子设备至少处理器、存储器,这里,存储器主 要是指固态存储器(SSD),SSD的存储介质为Nand。
[0066]该信息处理方法包括:
[0067]步骤S101,判断第一译码器译码第一数据是否失败,得到第一判断结果;
[0068] 这里,所述第一译码器可以是图1_3中的prime retry decoder。
[0069]步骤S102,当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存 第一译码数据,并释放所述第一译码器;
[0070] 这里,所述第一译码数据为第一子数据译码后的数据,所述第一子数据为所述第 一数据中已经译码成功的数据;
[0071] 这里,步骤S101和步骤S102属于正常译码阶段。所述保存第一译码数据可以是将 所述第一译码数据保存在Nand flash中。
[0072]步骤S103,判断是否利用重读译码器重读所述第一数据,得到第二判断结果;
[0073] 这里,所述重读译码器可以为图1-3中的prime retry decoder,图1-3中的deep retry decoder。
[0074] 步骤S104,当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读 缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码 数据;
[0075] 这里,所述重读缓存器可以是指图1-3中的retry buffer。
[0076]步骤S105,当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数 据保存在所述重读缓存器中。
[0077]步骤S201,当所述第一判断结果表明所述第一译码器译码第一数据失败时,还保 存第一描述信息,所述第一描述信息为所述第一数据中出错的数据的描述信息;
[0078]这里,所述第一描述信息可以为表1中的信息。
[0079]步骤S202,判断所述第一描述信息是否为第一次出现;
[0080]步骤S203,当所述第一描述信息为第一次出现时,或当第二判断结果表明不利用 重读译码器重读所述第一数据时,利用所述第一译码器继续对所述第二子数据进行译码, 所述第二子数据为所述第一数据中除所述第一子数据之外的数据。
[0081] 步骤S204,当所述第一描述信息不为第一次出现时,利用重读译码器对所述第一 数据进行重读。
[0082] 实施例三
[0083]基于前述的实施例,本发明实施例提供一种信息处理方法,该方法应用于电子设 备中的存储器的控制器,本发明实施例中的电子设备至少处理器、存储器,这里,存储器主 要是指固态存储器(SSD),SSD的存储介质为Nand。
[0084]该信息处理方法包括:
[0085]步骤S101,判断第一译码器译码第一数据是否失败,得到第一判断结果;
[0086] 这里,所述第一译码器可以是图1-3中的prime retry decoder。
[0087]步骤S102,当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存 第一译码数据,并释放所述第一译码器;
[0088]这里,所述第一译码数据为第一子数据译码后的数据,所述第一子数据为所述第 一数据中已经译码成功的数据;
[0089] 这里,步骤S101和步骤S102属于正常译码阶段。所述保存第一译码数据可以是将 所述第一译码数据保存在Nand flash中。
[0090] 步骤S103,判断是否利用重读译码器重读所述第一数据,得到第二判断结果;
[0091 ] 这里,所述重读译码器可以为图1-3中的prime retry decoder。
[0092]步骤S104,当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读 缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码 数据;
[0093] 这里,所述重读缓存器可以是指图1-3中的re try buffer。
[0094]步骤S105,当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数 据保存在所述重读缓存器中。
[0095] 步骤S301,利用所述重读译码器对第二子数据进行译码;
[0096]步骤S302,判断所述重读译码器译码所述第二子数据是否失败;
[0097]步骤S303,当所述重读译码器译码所述第二子数据成功时,将第二译码数据和所 述第一译码数据作为所述第一数据的译码数据输出,其中所述第二译码数据为所述第二子 数据的译码数据。
[0098] 步骤S304,当所述重读译码器译码所述第二子数据失败时,判断所述重读译码器 译码所述第二子数据的次数是否达到阈值;
[0099]步骤S305,当所述重读译码器译码所述第二子数据的次数达到阈值时,输出重读 失败信息,并将所述第一译码数据保存在软数据缓存器中,利用软数据译码器对所述第二 子数据译码;
[0100] 这里,所述软数据缓存器用于缓存所述软数据译码器译码成功的数据。
[0101] 步骤S306,判断软数据缓存器中是否被占用;
[0102] 步骤S307,当所述软数据缓存器未被占用时,将所述第一译码数据保存在软数据 缓存器中;当所述软数据缓存器未被占用时,采用先入先出(FIF0,First In First Out)缓 存所述第一译码数据。
[0103] 实施例四
[0104] 基于前述的实施例,本发明实施例提供一种信息处理方法,该方法应用于电子设 备中的存储器的控制器,本发明实施例中的电子设备至少处理器、存储器,这里,存储器主 要是指固态存储器(SSD),SSD的存储介质为Nand。
[0105]图2为本发明实施例四信息处理方法的实现流程示意图,如图2所示,该信息处理 方法包括:
[0106] 第一阶段,正常译码阶段
[0107] 步骤S401,第一译码器对第一数据进行译码;
[0108]步骤S402,判断第一译码器译码第一数据是否失败,得到第一判断结果;
[0109]这里,当第一判断结果表明所述第一译码器译码第一数据成功时,输出译码成功; 当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据,并释 放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子数据 为所述第一数据中已经译码成功的数据;判断是否利用重读译码器重读所述第一数据,得 到第二判断结果;当第二判断结果表明利用重读译码器重读所述第一数据时,进入步骤 S403;
[0110]在本实施例中,灰色框可以表示为一种输出状态。
[0111]步骤S403,判断重读缓存器(retry buffer)中是否被占用,得到第三判断结果,所 述重读缓存器用于所述重读译码器存储译码数据;
[0112] 这里,当所述第三判断结果表明重读缓存器被占用(N)时,丢弃所述第一译码数 据,并输出译码失败信息。当所述第三判断结果表明重读缓存器未被占用时,进入步骤 S404;
[0113] 第二阶段:重读译码阶段
[0114] 步骤S404,将所述第一译码数据保存在所述重读缓存器中,进行re try。
[0115] 步骤S405,判断所述第一描述信息是否为第一次出现;
[0116] 这里,当所述第一判断结果表明所述第一译码器译码第一数据失败时,还保存第 一描述信息,所述第一描述信息为所述第一数据中出错的数据的描述信息;当所述第一描 述信息为第一次出现时,或当第二判断结果表明不利用重读译码器重读所述第一数据时, 进入步骤S406;当所述第一描述信息不为第一次出现时,利用重读译码器对所述第一数据 进行重读。
[0117] 步骤S406,利用所述第一译码器继续对所述第二子数据进行译码,所述第二子数 据为所述第一数据中除所述第一子数据之外的数据。
[0118] 步骤S407,利用所述重读译码器对第二子数据进行译码;
[0119]步骤S408,判断所述重读译码器译码所述第二子数据是否失败;
[0120] 这里,当所述重读译码器译码所述第二子数据成功时,进入步骤S409;当所述重读 译码器译码所述第二子数据失败时,进入步骤S410;
[0121]步骤S409,将第二译码数据和所述第一译码数据作为所述第一数据的译码数据输 出,其中所述第二译码数据为所述第二子数据的译码数据。
[0122] 步骤S410,判断所述重读译码器译码所述第二子数据的次数是否达到阈值;
[0123] 这里,当所述重读译码器译码所述第二子数据的次数未达到阈值时,回到步骤 S404;当所述重读译码器译码所述第二子数据的次数达到阈值时,进入步骤S411。
[0124] 第三阶段:软信息译码阶段,又称为deep retry
[0125] 步骤S411,进入深度重试(deep retry)等待序列,输出retry失败,等待进入deep retry;
[0126] 步骤S412,判断软译码(soft decoder)是否空闲;
[0127] 这里,空闲时,进入步骤S413,反之,进入步骤S411;
[0128] 步骤S413,将重读缓存器(retry buffer)中的第一译码数据搬移到软译码的缓存 器(page buffer);输出可进行deep retry译码;
[0129] 这里,输出重读失败信息,并将所述第一译码数据保存在软数据缓存器中,利用软 数据译码器对所述第二子数据译码,其中所述软数据缓存器用于缓存所述软数据译码器译 码成功的数据。
[0130]步骤S414,判断第一描述信息中的描述符编号(descriptor ID)是否等于失败编 号(fail ID);如果descriptor ID不等于fail ID,则可以输出deep retry失败。
[0131 ]步骤S415,如果descriptor ID等于fail ID,则进行deep retry。
[0132] 实施例五
[0133] 基于前述的实施例,本发明实施例提供一种信息处理装置,该装置所包括的第一 判断单元、第一保存单元、第二判断单元、第三判断单元和第二保存单元都可以通过电子设 备中的SSD控制器来实现,当然也可通过具体的逻辑电路实现;在具体实施例的过程中,处 理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列 (FPGA)等。
[0134] 图3为本发明实施例五电子设备组成结构示意图,如图3所示,该装置500包括第一 判断单元501、第一保存单元502、第二判断单元503、第三判断单元504和第二保存单元505, 其中:
[0135] 所述第一判断单元501,用于判断第一译码器译码第一数据是否失败,得到第一判 断结果;
[0136] 所述第一保存单元502,用于当所述第一判断结果表明所述第一译码器译码第一 数据失败时,保存第一译码数据,并释放所述第一译码器,其中所述第一译码数据为第一子 数据译码后的数据,所述第一子数据为所述第一数据中已经译码成功的数据;
[0137] 所述第二判断单元503,用于判断是否利用重读译码器重读所述第一数据,得到第 二判断结果;
[0138] 所述第三判断单元504,用于当第二判断结果表明利用重读译码器重读所述第一 数据时,判断重读缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重 读译码器存储译码数据;
[0139] 所述第二保存单元505,用于当所述第三判断结果表明重读缓存器未被占用时,将 所述第一译码数据保存在所述重读缓存器中。
[0140] 本发明的其他实施例中,所述装置还包括第三保存单元、第四判断单元和第一译 码单元,其中:
[0141] 所述第三保存单元,用于当所述第一判断结果表明所述第一译码器译码第一数据 失败时,还保存第一描述信息,所述第一描述信息为所述第一数据中出错的数据的描述信 息;
[0142] 所述第四判断单元,用于判断所述第一描述信息是否为第一次出现;
[0143] 所述第一译码单元,用于当所述第一描述信息为第一次出现时,或当第二判断结 果表明不利用重读译码器重读所述第一数据时,利用所述第一译码器继续对所述第二子数 据进行译码,所述第二子数据为所述第一数据中除所述第一子数据之外的数据。
[0144] 本发明的其他实施例中,所述装置还包括重读单元,用于当所述第一描述信息不 为第一次出现时,利用重读译码器对所述第一数据进行重读。
[0145] 本发明的其他实施例中,所述装置还包括丢弃单元,用于当所述第三判断结果表 明重读缓存器被占用时,丢弃所述第一译码数据,并输出译码失败信息。
[0146] 本发明的其他实施例中,所述装置还包括第二译码单元、第五判断单元和第一输 出单元,其中:
[0147] 所述第二译码单元,用于利用所述重读译码器对第二子数据进行译码;
[0148] 所述第五判断单元,用于判断所述重读译码器译码所述第二子数据是否失败;
[0149] 所述第一输出单元,用于当所述重读译码器译码所述第二子数据成功时,将第二 译码数据和所述第一译码数据作为所述第一数据的译码数据输出,其中所述第二译码数据 为所述第二子数据的译码数据。
[0150] 本发明的其他实施例中,所述装置还包括第六判断单元、第二输出单元、第四保存 单元和第三译码单元,其中:
[0151]所述第六判断单元,用于当所述重读译码器译码所述第二子数据失败时,判断所 述重读译码器译码所述第二子数据的次数是否达到阈值;
[0152] 所述第二输出单元,用于当所述重读译码器译码所述第二子数据的次数达到阈值 时,输出重读失败信息;
[0153] 所述第四保存单元,用于将所述第一译码数据保存在软数据缓存器中;
[0154]所述第三译码单元,用于利用软数据译码器对所述第二子数据译码,其中所述软 数据缓存器用于缓存所述软数据译码器译码成功的数据。
[0155] 实施例六
[0156] 基于前述的实施例,本发明实施例再提供一种电子设备,该电子设备包括固态存 储器SSD,所述固态存储器包括译码器、缓存器和SSD控制器,其中:
[0157] 所述译码器至少包括第一译码器和重读译码器;在具体实现的过程中,所述译码 器至少可以LDPC译码器。
[0158] 所述缓存器至少包括重读缓存器;在具体实现的过程中,所述缓存器可以采用随 机存取存储器(RAM)来实现,例如可以采用静态随机存取存储器(SRAM,Static Random Access Memory)〇
[0159] 所述SSD控制器,用于判断第一译码器译码第一数据是否失败,得到第一判断结 果;当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据,并 释放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子数 据为所述第一数据中已经译码成功的数据;判断是否利用重读译码器重读所述第一数据, 得到第二判断结果;当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读 缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码 数据;当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所述 重读缓存器中。
[0160] 在本发明的其他实施例中,所述SSD控制器还用于:当所述第一判断结果表明所述 第一译码器译码第一数据失败时,还保存第一描述信息,所述第一描述信息为所述第一数 据中出错的数据的描述信息;判断所述第一描述信息是否为第一次出现;当所述第一描述 信息为第一次出现时,或当第二判断结果表明不利用重读译码器重读所述第一数据时,利 用所述第一译码器继续对所述第二子数据进行译码,所述第二子数据为所述第一数据中除 所述第一子数据之外的数据。
[0161] 在本发明的其他实施例中,所述SSD控制器,还用于当所述第一描述信息不为第一 次出现时,利用重读译码器对所述第一数据进行重读。
[0162] 在本发明的其他实施例中,所述SSD控制器,还用于当所述第三判断结果表明重读 缓存器被占用时,丢弃所述第一译码数据,并输出译码失败信息。
[0163] 在本发明的其他实施例中,所述SSD控制器,还用于:利用所述重读译码器对第二 子数据进行译码;判断所述重读译码器译码所述第二子数据是否失败;当所述重读译码器 译码所述第二子数据成功时,将第二译码数据和所述第一译码数据作为所述第一数据的译 码数据输出,其中所述第二译码数据为所述第二子数据的译码数据。
[0164] 在本发明的其他实施例中,所述缓存器还包括软数据缓存器,所述SSD控制器,还 用于:当所述重读译码器译码所述第二子数据失败时,判断所述重读译码器译码所述第二 子数据的次数是否达到阈值;当所述重读译码器译码所述第二子数据的次数达到阈值时, 输出重读失败信息,并将所述第一译码数据保存在软数据缓存器中,利用软数据译码器对 所述第二子数据译码,其中所述软数据缓存器用于缓存所述软数据译码器译码成功的数 据。
[0165] 这里需要指出的是:以上电子设备实施例项的描述,与上述方法描述是类似的,具 有同方法实施例相同的有益效果,因此不做赘述。对于本发明电子设备实施例中未披露的 技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不 再赘述。
[0166] 应理解,说明书通篇中提到的"一个实施例"或"一实施例"意味着与实施例有关的 特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的 "在一个实施例中"或"在一实施例中"未必一定指相同的实施例。此外,这些特定的特征、 结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实 施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其 功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施 例序号仅仅为了描述,不代表实施例的优劣。
[0167] 需要说明的是,在本文中,术语"包括"、"包含"或者其任何其他变体意在涵盖非排 他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而 且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有 的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括该 要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0168] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其 它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为 一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或 可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部 分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合 或通信连接,可以是电性的、机械的或其它形式的。
[0169] 上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显 示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单 元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0170] 另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可 以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述 集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0171] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通 过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读 存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0172]或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品 销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施 例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以 是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。 而前述的存储介质包括:移动存储设备、R0M、磁碟或者光盘等各种可以存储程序代码的介 质。
[0173]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1. 一种信息处理方法,其特征在于,所述方法包括: 判断第一译码器译码第一数据是否失败,得到第一判断结果; 当所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据, 并释放所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子 数据为所述第一数据中已经译码成功的数据; 判断是否利用重读译码器重读所述第一数据,得到第二判断结果; 当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读缓存器中是否被 占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码数据; 当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所述重 读缓存器中。2. 根据权利要求1所述的方法,其特征在于,所述方法还包括: 当所述第一判断结果表明所述第一译码器译码第一数据失败时,还保存第一描述信 息,所述第一描述信息为所述第一数据中出错的数据的描述信息; 判断所述第一描述信息是否为第一次出现; 当所述第一描述信息为第一次出现时,或当第二判断结果表明不利用重读译码器重读 所述第一数据时,利用所述第一译码器继续对所述第二子数据进行译码,所述第二子数据 为所述第一数据中除所述第一子数据之外的数据。3. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 当所述第一描述信息不为第一次出现时,利用重读译码器对所述第一数据进行重读。4. 根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括: 当所述第三判断结果表明重读缓存器被占用时,丢弃所述第一译码数据,并输出译码 失败ig息。5. 根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括: 利用所述重读译码器对第二子数据进行译码; 判断所述重读译码器译码所述第二子数据是否失败; 当所述重读译码器译码所述第二子数据成功时,将第二译码数据和所述第一译码数据 作为所述第一数据的译码数据输出,其中所述第二译码数据为所述第二子数据的译码数 据。6. 根据权利要求5所述的方法,其特征在于,所述方法还包括: 当所述重读译码器译码所述第二子数据失败时,判断所述重读译码器译码所述第二子 数据的次数是否达到阈值; 当所述重读译码器译码所述第二子数据的次数达到阈值时,输出重读失败信息,并将 所述第一译码数据保存在软数据缓存器中,利用软数据译码器对所述第二子数据译码,其 中所述软数据缓存器用于缓存所述软数据译码器译码成功的数据。7. -种信息处理装置,其特征在于,所述装置包括第一判断单元、第一保存单元、第二 判断单元、第三判断单元和第二保存单元,其中: 所述第一判断单元,用于判断第一译码器译码第一数据是否失败,得到第一判断结果; 所述第一保存单元,用于当所述第一判断结果表明所述第一译码器译码第一数据失败 时,保存第一译码数据,并释放所述第一译码器,其中所述第一译码数据为第一子数据译码 后的数据,所述第一子数据为所述第一数据中已经译码成功的数据; 所述第二判断单元,用于判断是否利用重读译码器重读所述第一数据,得到第二判断 结果; 所述第三判断单元,用于当第二判断结果表明利用重读译码器重读所述第一数据时, 判断重读缓存器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器 存储译码数据; 所述第二保存单元,用于当所述第三判断结果表明重读缓存器未被占用时,将所述第 一译码数据保存在所述重读缓存器中。8. -种电子设备,其特征在于,所述固态存储器SSD,所述固态存储器包括译码器、缓存 器和SSD控制器,其中: 所述译码器至少包括第一译码器和重读译码器; 所述缓存器至少包括重读缓存器; 所述SSD控制器,用于判断第一译码器译码第一数据是否失败,得到第一判断结果;当 所述第一判断结果表明所述第一译码器译码第一数据失败时,保存第一译码数据,并释放 所述第一译码器,其中所述第一译码数据为第一子数据译码后的数据,所述第一子数据为 所述第一数据中已经译码成功的数据;判断是否利用重读译码器重读所述第一数据,得到 第二判断结果;当第二判断结果表明利用重读译码器重读所述第一数据时,判断重读缓存 器中是否被占用,得到第三判断结果,所述重读缓存器用于所述重读译码器存储译码数据; 当所述第三判断结果表明重读缓存器未被占用时,将所述第一译码数据保存在所述重读缓 存器中。9. 根据权利要求8所述的电子设备,其特征在于,所述SSD控制器还用于:当所述第一判 断结果表明所述第一译码器译码第一数据失败时,还保存第一描述信息,所述第一描述信 息为所述第一数据中出错的数据的描述信息;判断所述第一描述信息是否为第一次出现; 当所述第一描述信息为第一次出现时,或当第二判断结果表明不利用重读译码器重读所述 第一数据时,利用所述第一译码器继续对所述第二子数据进行译码,所述第二子数据为所 述第一数据中除所述第一子数据之外的数据。10. 根据权利要求9所述的电子设备,其特征在于,所述SSD控制器,还用于当所述第一 描述信息不为第一次出现时,利用重读译码器对所述第一数据进行重读。
【文档编号】G11C29/42GK105893167SQ201610184716
【公开日】2016年8月24日
【申请日】2016年3月28日
【发明人】王海洋, 姜莹
【申请人】联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1